关于信号问题,子进程捕获父进程发出信号,缓冲问题怎么解决
题目内容:编写一个程序,他创建一个子进程.父进程向子进程发送一个信号,然后等待子进程终止
子进程接受信号,输出自己的状态信息,最后终止自己
代码:
#include <sys/types.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <wait.h>
void handler(int signo)
{
printf("这里是子进程,pid=%d \n",getpid());
}
//SIGUSR1的宏值(status):10 SIGUSR2:12
int main()
{
int pid;
pid=fork();
if(pid<0)
{ //创建子进程
perror("fork error");
printf("创建失败\n");
}
if(pid == 0)
{ //进入子进程
signal(SIGUSR1,handler);
printf("这里是子进程(PID:%d)" ,getpid());
pause();
printf("终止子进程\n");
exit(0);
}
else
{
int status;
printf("这里是父进程(PID:%d)\n",getppid());
printf("等待子进程终止\n");
kill(pid,SIGUSR1); //给子进程发出信号,SIGUSR1给定的信号
wait(&status); //父进程执行到此,马上阻塞自己,直到有子进程结束。
printf("子进程终止,返回status值为:%d\n",status); //子进程终止,返回子进程结束状态值
pause();
}
return 0;
}