Linux使用日志系統(tǒng)調(diào)試守護(hù)進(jìn)程 |
發(fā)布時間: 2012/8/10 14:56:27 |
守護(hù)進(jìn)程脫離終端控制,在調(diào)試時候造成一定不便。可以用syslog服務(wù)把程序出錯信息輸入日志文件中。從而可以看出問題所在。
把上次的程序用日志方式改寫。 主要用到三個函數(shù):syslog,openlog,closelog。 守護(hù)進(jìn)程的寫法不變,加入日志服務(wù)。 代碼來自華清遠(yuǎn)見: #include #include #include #include #include #include #include #include int main() { pid_t pid, sid; int i, fd; char *buf = "this is a daemon!n"; pid = fork();//創(chuàng)建子進(jìn)程,父進(jìn)程退出 if(pid < 0) { printf("error fork!n"); exit(1); } else if(pid > 0) { exit(0); } // setsid();//子進(jìn)程中創(chuàng)建新會話 // chdir("/");//改變當(dāng)前目錄為根目錄 openlog("daemon_syslog", LOG_PID, LOG_DAEMON);//打開日志服務(wù) if((sid = setsid()) < 0) { syslog(LOG_ERR, "%sn", "setsid");//向日志中寫入 exit(1); } if((sid = chdir("/")) < 0) { syslog(LOG_ERR, "%sn", "chdir");//向日志中寫入 exit(1); } umask(0);//重新設(shè)置文件權(quán)限 for(i = 0; i < getdtablesize(); i++)//關(guān)閉文件描述 { close(i); } //創(chuàng)建完成正式開始守護(hù)進(jìn)程工作 while(1) { if((fd = open("/tmp/daemon.log", O_CREAT|O_WRONLY|O_APPEND, 0600)) < 0){ syslog(LOG_ERR, "open"); exit(1); } write(fd, buf, strlen(buf) + 1); close(fd); sleep(10); } closelog();//關(guān)閉系統(tǒng)日志服務(wù) exit(0); } 本文出自:億恩科技【www.ruiliheng.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |