请教Linux的一个signal信号问题

psybeing 2016-12-21 10:56:22
我有1个主进程和2个线程,代码大概如下:
void main()
{
pthread_create(task1.....);
pthread_create(task2.......);

for(;;) {run();}
}

void task1()
{
for(::) {run(); }
}

void task2()
{
for(::){run(): }
}

因为task1和task2都有服务器端程序socket,为了防止触发PIPE错误,我对PIPE信号作了忽略处理,调用了
signal(SIGPIPE, SIG_IGN)。我的问题是signal调用加在哪里?在main里边加一句signal(SIGPIPE, SIG_IGN)就可以了?
还是应该task1和task2都要加入signal(SIGPIPE, SIG_IGN)?
我个人推测应该只在main里边就可以了,主进程会处理子线程的异常处理。还请各位大神帮忙解答,谢谢!

...全文
155 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 psybeing 的回复:
[quote=引用 1 楼 q3733353520 的回复:] 在main里面就可以
谢谢,能否解释一下signal的原理性的东西,比如怎么知道把线程的信号都发给signal?[/quote] http://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html
happyzeng79 2016-12-22
  • 打赏
  • 举报
回复
加在main函数中即可。
psybeing 2016-12-22
  • 打赏
  • 举报
回复
引用 3 楼 q3733353520 的回复:
[quote=引用 2 楼 psybeing 的回复:] [quote=引用 1 楼 q3733353520 的回复:] 在main里面就可以
谢谢,能否解释一下signal的原理性的东西,比如怎么知道把线程的信号都发给signal?[/quote] http://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html[/quote] 十分感谢!
psybeing 2016-12-21
  • 打赏
  • 举报
回复
引用 1 楼 q3733353520 的回复:
在main里面就可以
谢谢,能否解释一下signal的原理性的东西,比如怎么知道把线程的信号都发给signal?
  • 打赏
  • 举报
回复
在main里面就可以

23,124

社区成员

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

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