守护进程的写法如下:
------------笛风2013.10.10
#include<unistd.h>
#include<signal.h>
#include<stdlib.h>
#include<sys/param.h>
#include<sys/types.h>
#include<sys/stat.h>
void init_daemon(void)
{
int pid;
int i;
if(pid==fork())
{
exit(0);
}
else if(pid<0)
{
exit(1);
}
setsid();
if(pid==fork())
{
exit(0);
}
else if(pid<0)
{
exit(1);
}
for(i=0;i<NOFILE;i++)
{
close(i);
}
chdir("/tmp");
umask(0);
return;
}
测试程序为:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void init_deamon(void);
main()
{
FILE *fp;
time_t t;
init_daemon();
while(1)
{
sleep(60);
if((fp=fopen("test.log","a"))>=0)
{
t=time(0);
fprintf(fp,"I am here at %s\n",asctime(localtime(&t)));
fclose(fp);
}
}
}