千家信息网

编写守护进程

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,1)创建子进程,父进程退出2)在子进程中创建新会话setsid()函数,用于创建一个新会话,并担任会话组的组长。调用setsid()函数有三个作用:让进程摆脱原会话的控制让进程摆脱原进程组的控制让进程
千家信息网最后更新 2025年02月04日编写守护进程
  1. 1)创建子进程,父进程退出

  2. 2)在子进程中创建新会话

  3. setsid()函数,用于创建一个新会话,并担任会话组的组长。调用setsid()函数有三个作用:

让进程摆脱原会话的控制

让进程摆脱原进程组的控制

让进程摆脱原控制终端的控制

  1. 3) 用chdir()函数改变工作目录

  2. 4)用umask()设置文件权限掩码

  3. 5) 关闭文件描述符

  4. #include #include #include #include #include #include int main(int argc, const char *argv[]){ pid_t pid; int i,fd; char *buf = "This is a Daemon log\n"; pid = fork(); if(pid < 0) {  perror("fail to fork\n");  exit(0); } if(pid > 0)  //父进程退出  第一步 {  exit(0); } setsid();    //第二步 chdir("/tmp");  //第三步 umask(0);   //第四步  for(i = 0;i < getdtablesize();i++)   //第五步 循环删除文件描述符 {  close(i); } while(1) {  if((fd = open("daemon.log",O_CREAT|O_RDWR|O_APPEND,0667))<0)  {    perror("fail to open");   exit(1);  }  write(fd,buf,strlen(buf));  close(fd);  sleep(2); } return 0;}
0