== 这是 中国WEB信息博物馆Web InfoMall 2004年06月14日 存储的网页 ==
点击这里查看本网页的其他版本 隐藏InfoMall信息

竹笋炒肉: linux上编写守护进程的例程

May 12, 2004

linux上编写守护进程的例程

  摘自《开放系统世界》2004年第5期郭吉平、任莲的文章“亲自动手编写守护进程”。
/*郭吉平、任莲 亲自动手编写守护进程*/
#include
#include
#include

void main(int argc, char ** argv){
time_t now;
int childpid, fd, fdtablesize;
int error, in, out;

/*忽略终端 I/O信号,STOP信号*/
signal(SIGTTOU,SIG_IGN);
signal(SIGTTIN,SIG_IGN);
signal(SIGTSTP,SIG_IGN);
signal(SIGHUP,SIG_IGN);

/*父进程退出,程序进入后台运行*/
if( fork()!=0 ) exit(1);
if( setsid()<0 ) exit(1); /*创建一个新的会议组*/

/*子进程退出,孙进程没有控制终端了*/
if( fork()!=0 ) exit(1);
if( chdir("/tmp")==-1 )exit(1);

/*关闭打开的文件描述符,包括标准输入、标准输出和标准错误输出*/
for( fd=0, fdtablesize=getdtablesize(); fd< fdtablesize;fd++) close(fd);

umask(0);/*重设文件创建掩模*/
signal(SIGCHLD,SIG_IGN);/*忽略SIGCHLD信号*/
/*打开log系统*/
syslog(LOG_USER|LOG_INFO,"守护进程测试!\n");
while(1){
time(&now);
syslog(LOG_USER|LOG_INFO,"当前时间:\t%s\t\t\n",ctime(&now));
sleep(6);
}
}
Posted by Hilton at May 12, 2004 08:09 AM | TrackBack
Comments
Post a comment









Remember personal info?