其实我们可以利用我们刚才写的创建守护进程程序默认daemon()实现:
代码如下:
01#include 02#include 03#include 04#include 05#include 06#include 07#include 08#define ERR_EXIT(m) 09do10{11perror(m);12exit(EXIT_FAILURE);13}14while (0);15void creat_daemon(int nochdir, int noclose);16int main(void)17{18time_t t;19int fd;20creat_daemon(0,0);21while(1){22fd = open("daemon.log",O_WRONLY|O_CREAT|O_APPEND,0644);23if(fd == -1)24ERR_EXIT("open error");25t = time(0);26char *buf = asctime(localtime(&t));27write(fd,buf,strlen(buf));28close(fd);29sleep(60);30}31return 0;32}33void creat_daemon(int nochdir, int noclose)34{35pid_t pid;36pid = fork();37if( pid == -1)38ERR_EXIT("fork error");39if(pid > 0 )40exit(EXIT_SUCCESS);41if(setsid() == -1)42ERR_EXIT("SETSID ERROR");43if(nochdir == 0)44chdir("/");45if(noclose == 0){46int i;47for( i = 0; i < 3;i)48{49close(i);50open("/dev/null", O_RDWR);51dup(0);52dup(0);53}54umask(0);55return;56}复制代码#include #include #include #include #include #include #include #define ERR_EXIT(m) do{perror(m);exit(EXIT_FAILURE);}while (0);void creat_daemon(int nochdir, int noclose);int main(void){time_t t;int fd;creat_daemon(0,0);while(1){fd = open("daemon.log",O_WRONLY|O_CREAT|O_APPEND,0644);if(fd == -1)ERR_EXIT("open error");t = time(0);char *buf = asctime(localtime(&t));write(fd,buf,strlen(buf));close(fd);sleep(60);}return 0;}void creat_daemon(int nochdir, int noclose){pid_t pid;pid = fork();if( pid == -1)ERR_EXIT("fork error");if(pid > 0 )exit(EXIT_SUCCESS);if(setsid() == -1)ERR_EXIT("SETSID ERROR");if(nochdir == 0)chdir("/");if(noclose == 0){int i;for( i = 0; i < 3;i){close(i);open("/dev/null", O_RDWR);dup(0);dup(0);}umask(0);return;}关于linux系统创建守护进程的操作步骤就给大家讲解到这里了,有此工作需求的伙伴,可以按照小编的步骤进行创建 。