linux进程开发之(九):多进程开发二
时间:2010-10-25 来源:andyluo324324
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
#include<syslog.h>
#define MAXFILE 65535 int main(void)
{
pid_t child1,child2;
int i;
child1=fork();//创建子进程1
if(child1==-1)//出错判断
{
perror("child1 fork");
exit(1);
}
else if(child1>0)//如果运行在父进程就退出
{
exit(0);
}
openlog("exc2_info",LOG_PID,LOG_DAEMON);//打开日志服务
setsid();//下面就开始编写守护进程
chdir("/");
umask(0);
for(i=0;i<MAXFILE;i++)
{
close(i);
}
child2=fork();//创建子进程2
if(child2==-1)
{
perror("child2 fork");
exit(1);
}
else if (child2==0)//在日志中写入字符串
{
syslog(LOG_INFO,"child2 will sleep for 10s");
sleep(10);
syslog(LOG_INFO,"child2 is going to exit !");
exit(0);
}
else
{
waitpid(child2,NULL,0);//关闭日志服务
syslog(LOG_INFO,"child1 noticed that child2 has exited");
closelog();
while(1)
{
sleep(10);
}
}
}
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
#include<syslog.h>
#define MAXFILE 65535 int main(void)
{
pid_t child1,child2;
int i;
child1=fork();//创建子进程1
if(child1==-1)//出错判断
{
perror("child1 fork");
exit(1);
}
else if(child1>0)//如果运行在父进程就退出
{
exit(0);
}
openlog("exc2_info",LOG_PID,LOG_DAEMON);//打开日志服务
setsid();//下面就开始编写守护进程
chdir("/");
umask(0);
for(i=0;i<MAXFILE;i++)
{
close(i);
}
child2=fork();//创建子进程2
if(child2==-1)
{
perror("child2 fork");
exit(1);
}
else if (child2==0)//在日志中写入字符串
{
syslog(LOG_INFO,"child2 will sleep for 10s");
sleep(10);
syslog(LOG_INFO,"child2 is going to exit !");
exit(0);
}
else
{
waitpid(child2,NULL,0);//关闭日志服务
syslog(LOG_INFO,"child1 noticed that child2 has exited");
closelog();
while(1)
{
sleep(10);
}
}
}
相关阅读 更多 +