您的位置:首页 > 其它

C程序完成:父进程创建一个子进程,父进程对子进程设置一个报警信号,然后父进程等待子进程的结束,如果此时报警信号先到,就终止子进程。

2015-06-16 16:05 549 查看
#include <unistd.h>

#include <signal.h>

#include <sys/types.h>

#include <sys/wait.h>

#include <stdio.h>

#include <stdlib.h>

void killchild(int pid_child);

void killchild(int pid_child){

printf("killing child process \n");

//调用wait函数

int pidxx;

pidxx=wait(NULL);

printf("killed the child process, whose pid is %d \n",pidxx);

exit(0);

}

void killyourself(int ownid);

void killyourself(int ownid){



//printf("killing child process %d \n",pid_child);

printf("parent sent signal, child process killed itself \n");

exit(0);

}

int main(){



// 要捕捉的信号

(void) signal(SIGALRM,killchild);



int pid_child=0;



int pid = fork();



if(pid==-1){

perror("fork failed\n");

// exit(1);

exit(EXIT_FAILURE);



}

if(pid==0){

//子进程

pid_child=getpid();

//子进程也signal一个信号

(void) signal(SIGHUP,killyourself);

sleep(10);

kill(getppid(),SIGALRM);



}else{

//父进程

//等待

// pause();

sleep(6);

kill(pid_child,SIGHUP);

exit(0);



}





}

当父进程先结束时,会发送信号给子进程,子进程强制退出。(例如:父进程 sleep(6))



当子进程先结束时,会向父进程发出信号,结束进程。(例如:父进程 sleep(15))



如果写的有问题欢迎指出~

(注,文件名称命名错了semaphore是线程里的内容)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: