linux后台进程实例

来源:互联网 发布:python是用来做什么的 编辑:程序博客网 时间:2024/05/21 08:53

完整代码如下:
#include<stdio.h>#include<sys/types.h>#include<unistd.h>#include<signal.h>#include<sys/param.h>#include<sys/stat.h>#include<time.h>#include<syslog.h>int init_daemon(void){   int pid;   int i;    /*忽略终端I/O信号与STOP信号*/   signal(SIGTTOU,SIG_IGN);   signal(SIGTTIN,SIG_IGN);   signal(SIGTSTP,SIG_IGN);   signal(SIGHUP,SIG_IGN);   pid=fork();   if(pid>0){      exit(0);/*结束父进程,使得子进程成为后台进程。*/   }else if(pid<0){       return -1;   }   /*建立一个新的进程组,在这个新进程组中,子进程成为这个进程组的首进程,以使该进程脱离所有终端*/   setsid();  /*再次新建一个子进程,退出父进程,保证该进程不是进程组长,同时让该进程无法再打开一个新的终端*/   pid=fork();  if(pid>0){       exit(0);    }   else if(pid<0){     return -1;   }  /*关闭所有从父进程继承的不再需要的文件描述符*/  for(i=0;i<NOFILE;close(i++));  /*改变工作目录,使得进程不与任何文件系统联系*/  chdir("/");  /*将文件屏蔽字设置为0*/  umask(0);  /*忽略SIGCHLD信号*/  signal(SIGCHLD,SIG_IGN);  return 0;}int main(){  time_t now;  init_daemon();  syslog(LOG_USER|LOG_INFO,"测试守护进程!\n");  while(1){   sleep(8);     time(&now);     syslog(LOG_USER|LOG_INFO,"系统时间:\t\%s\t\t\n",ctime(&now));   }}

为保证本实例正常运行,请配置如下内容;

#vim /etc/rsyslog.conf

最未尾增加:

user.*  /var/log/test.log

启动rsyslog

/etc/init.d/rsyslog restart

=============================

结果如下:

root@ubuntu:/var/log# tail -f /var/log/test.log 
Apr 26 02:06:30 ubuntu daemon: 系统时间:#011Sun Apr 26 02:06:30 2015#012#011#011
Apr 26 02:06:38 ubuntu daemon: 系统时间:#011Sun Apr 26 02:06:38 2015#012#011#011
Apr 26 02:06:46 ubuntu daemon: 系统时间:#011Sun Apr 26 02:06:46 2015#012#011#011
Apr 26 02:06:54 ubuntu daemon: 系统时间:#011Sun Apr 26 02:06:54 2015#012#011#011
Apr 26 02:07:02 ubuntu daemon: 系统时间:#011Sun Apr 26 02:07:02 2015#012#011#011
Apr 26 02:07:10 ubuntu daemon: 系统时间:#011Sun Apr 26 02:07:10 2015#012#011#011
Apr 26 02:07:18 ubuntu daemon: 系统时间:#011Sun Apr 26 02:07:18 2015#012#011#011
Apr 26 02:07:26 ubuntu daemon: 系统时间:#011Sun Apr 26 02:07:26 2015#012#011#011
Apr 26 02:07:34 ubuntu daemon: 系统时间:#011Sun Apr 26 02:07:34 2015#012#011#011
Apr 26 02:07:42 ubuntu daemon: 系统时间:#011Sun Apr 26 02:07:42 2015#012#011#011
Apr 26 02:07:50 ubuntu daemon: 系统时间:#011Sun Apr 26 02:07:50 2015#012#011#011


0 0
原创粉丝点击