关于信号问题,子进程捕获父进程发出信号,缓冲问题怎么解决

TQYSY2 2016-07-05 08:14:29
题目内容:编写一个程序,他创建一个子进程.父进程向子进程发送一个信号,然后等待子进程终止
子进程接受信号,输出自己的状态信息,最后终止自己
代码:
#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;
}
...全文
305 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
nswcfd 2016-07-07
  • 打赏
  • 举报
回复
是同步问题吧? 父进程的信号有可能在子进程注册handler之前就发出了。
renwotao2009 2016-07-06
  • 打赏
  • 举报
回复
什么缓冲问题,你没说明
TQYSY2 2016-07-05
  • 打赏
  • 举报
回复
没有人吗QAQ

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧