daemon 不太明白
#include <stdio.h>
#include <sys/types.h>
#include <time.h>
int daemon_init() {
pid_t pid;
if ((pid = fork()) < 0) return -1;
else if (pid != 0) exit(0);
close(0);close(1);close(2);
setsid();
//chdir( "/ ");
umask(0);
return 0;
}
int main() {
time_t t;
FILE *fp;
daemon_init();
while (1) {
fp = fopen( "test.log ", "a ");
t = time(0);
fprintf(fp, "%s\n ",asctime(gmtime(&t)));
fclose(fp);
sleep(2);
}
}
我如果不加daemon_init();程序也照样能运行
daeman进程和普通的进程相比有什么优势吗?
------解决方案--------------------daemon进程跟守护进程是有区别的,类似于后台进程( ./XXX &)
生成daemon进程需要脱离当前的会话组
不加daemon_init, 就是当前shell下的一个子进程...