#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
#include<syslog.h>
#define MAXFILE 65535
int main()
{
pid_t pc;
int i,j,fd,len;
char *buf="This is a Dameon\n";
len =strlen(buf);
printf("father process id=%d\n",getpid());
pc=fork(); //创建一个子进程
if(pc<0) //子进程创建错误
{
printf("error fork\n");//跑到前台去
exit(1);
}
else if(pc>0)//如果fork函数返回的id>0,说明在父进程中
{
printf("fork return value>0,so in father process id=%d\n",getpid());
exit(0); //退出父进程
}
printf("son process id=%d\n",getpid());
openlog("demo_update",LOG_PID, LOG_DAEMON);//在子进程中
setsid();
sleep(1);
syslog(LOG_ERR, "dddddddddd=====%d\n", getppid());
chdir("/");
umask(0);
for(i=0;i<MAXFILE;i++)
close(i);
if((fd=open("home/nsl/myprogram/dameon.log",O_CREAT|O_WRONLY|O_APPEND,0600))<0) //打开文件
{
perror("/nsl/myprogram/dameon.log---open");
exit(1);
}
for(j=0;j<100;j++)
{
write(fd, buf, len+1);//向里面写入"This is dameon"
sleep(10);
}
closelog(); //关闭log
close(fd); //关掉这个文件描述符
return 0;
}