龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

daemon实例

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
#include #include #include #include #include #include #include void init_daemon(void) { int pid; int i; if(pid=fork()) exit(0);//是父进程,结束父进程 else if(pid exit(1);//fork失败,退出 //是第一子进程,后台继续执行

  #include

  

#include

  

#include

  

#include

  

#include

  

#include

  

#include

  

  

void init_daemon(void)

  

{

  

int pid;

  

int i;

  

  

if(pid=fork())

  

exit(0);//是父进程,结束父进程

  

else if(pid< 0)

  

exit(1);//fork失败,退出

  

//是第一子进程,后台继续执行

  

  

setsid();//第一子进程成为新的会话组长和进程组长

  

//并与控制终端分离

  

if(pid=fork())

  

exit(0);//是第一子进程,结束第一子进程

  

else if(pid< 0)

  

exit(1);//fork失败,退出

  

//是第二子进程,继续

  

//第二子进程不再是会话组长

  

  

for(i=0;i< NOFILE;++i)//关闭打开的文件描述符

  

close(i);

  

chdir("/tmp");//改变工作目录到/tmp

  

umask(0);//重设文件创建掩模

  

return;

  

}

  

  

main()

  

{

  

FILE *fp;

  

time_t t;

  

init_daemon();//初始化为Daemon

  

  

while(1)//每隔一分钟向test.log报告运行状态

  

{

  

sleep(60);//睡眠一分钟

  

if((fp=fopen("test.log","a")) >=0)

  

{

  

t=time(0);

  

fprintf(fp,"I'm here at %s

",asctime(localtime(&t)));

  

fclose(fp);

  

}

  

}

  

}

  

精彩图集

赞助商链接