创建守护进程:先建立守护进程,在守护进程建立一个子进程,该子进程暂停10s,然后退出,并由该守护进程收集子进程退出的消息。子进程,守护进程的退出消息都在/var/log/message中输出,子进程退
2016-08-09 20:50
429 查看
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <sys/wait.h>
#include <string.h>
#include <fcntl.h>
#define MAXFILE 65535
int main(void)
{
pid_t child1,child2;
int i,len,fd;
char *buf="This is a dameon";
len=strlen(buf);
child1=fork();
if(child1==-1)
{
printf("child1 fork\n");
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);
}
if((fd=open("/var/log/message", O_CREAT|O_WRONLY|O_APPEND, 0600)) < 0)
{
printf("open file error.\n");
exit(1);
}
child2=fork();
if(child2==-1)
{
printf("child2 fork\n");
exit(1);
}
else if(child2==0)
{
//printf("cchild2 will sleep for 10s\n");
sleep(10);
write(fd, buf, len+1);
exit(0);
}
else
{
waitpid(child2,NULL,0);
//printf("child1 noticed that child2 has exited\n");
while(1)
{
sleep(10);
write(fd, buf, len+1);
}
close(fd);
}
}
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <sys/wait.h>
#include <string.h>
#include <fcntl.h>
#define MAXFILE 65535
int main(void)
{
pid_t child1,child2;
int i,len,fd;
char *buf="This is a dameon";
len=strlen(buf);
child1=fork();
if(child1==-1)
{
printf("child1 fork\n");
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);
}
if((fd=open("/var/log/message", O_CREAT|O_WRONLY|O_APPEND, 0600)) < 0)
{
printf("open file error.\n");
exit(1);
}
child2=fork();
if(child2==-1)
{
printf("child2 fork\n");
exit(1);
}
else if(child2==0)
{
//printf("cchild2 will sleep for 10s\n");
sleep(10);
write(fd, buf, len+1);
exit(0);
}
else
{
waitpid(child2,NULL,0);
//printf("child1 noticed that child2 has exited\n");
while(1)
{
sleep(10);
write(fd, buf, len+1);
}
close(fd);
}
}
相关文章推荐
- 1.写多进程,一个父进程,两个子进程,一个运行ls –l, 另一个暂停5s,父进程先阻塞等待第一个子进程的结束,然后用非阻塞等另一个进程退出,收集到第二个子进程结束的信息,父进程就返回。
- Linux下创建两个子进程,并在子进程异常退出时重新创建
- 操作系统实验参考以上示例程序中建立并发进程的方法,编写一个多进程并发执行程序。父进 程首先创建一个执行ls命令的子进程然后再创建一个执行ps命令的子进程,并控制 ps 命令总在 ls 命令之前执行。
- vb6创建子进程并等待子进程的退出。
- C程序完成:父进程创建一个子进程,父进程对子进程设置一个报警信号,然后父进程等待子进程的结束,如果此时报警信号先到,就终止子进程。
- ACL编程之父子进程机制,父进程守护子进程以防止子进程异常退出
- [置顶] ACL编程之父子进程机制,父进程守护子进程以防止子进程异常退出
- 父进程产生一系列子进程,每个子进程打印自己的PID然后退出。要求父进程最后打印PID。
- [Windows]_[初级]_[创建独立子进程和读取子进程的输出]
- 编写一个程序,使用fork函数来创建一个子进程,并分别输出父子进程的进程ID
- ACL编程之父子进程机制,父进程守护子进程以防止子进程异常退出
- linux进程创建与守护;exec 进程内核页表建立
- [Windows]_[初级]_[创建独立子进程和读取子进程的输出]
- 实验 9-1 1. 实现以下功能 a) 调用 pipe()创建无名管道 b) 调用 fork 创建一个子进程 c) 在子进程中向管道内写入 128k 数据,打印出进程号及成功写入的字节数 d) 在父
- 用进程相关API函数编程一个程序,使之产生一个进程扇,父进程产生一系列子进程,每个子进程打印自己的PID然后退出。要求父进程最后打印PID
- 编写一个程序,使用fork函数来创建一个子进程,并且说明父进程和子进程的随机返回问题
- UNIX环境编程----编程实例---创建一个子进程并建立一个新的会话
- linux下的wait()实现等待一个子进程和所有子进程退出
- ACL编程之父子进程机制,父进程守护子进程以防止子进程异常退出
- linux进程创建与守护;exec 进程内核页表建立