管道连接的两个程序怎么处理SIGINT?

17 views
Skip to first unread message

Hu.Ziming

unread,
Feb 15, 2012, 12:04:27 PM2/15/12
to linu...@googlegroups.com
嗯,RT。
之前跑一个东西,把命令行的输出用tee给存下来了,然后按ctrl-c就不会触发里面SIGINT的handler
本以为是tee把SIGINT给卡住了,然后给后面发了个SIGPIPE
但是自己刚写程序测了一下发现tee和管道前面的那个程序都能收到SIGINT
然后,就糊涂了

想问一下,SIGINT是发给所有当前活动进程的吗?
另外,多线程的话,应该所有线程都能收到这个SIGINT吧

谢~

fft fft

unread,
Feb 15, 2012, 12:09:51 PM2/15/12
to linu...@googlegroups.com
应该是前台进程都能收到SIGINT的


Hu.Ziming

unread,
Feb 15, 2012, 12:11:43 PM2/15/12
to linu...@googlegroups.com
嗯,就是说,在管道上的程序,每一个都会收到SIGINT是吗?

2012/2/16 fft fft <fft...@gmail.com>:
> 应该是前台进程都能收到SIGINT的

fft fft

unread,
Feb 15, 2012, 12:16:16 PM2/15/12
to linu...@googlegroups.com
应该是没有用&弄到后台去的当前终端起的进程都会收到吧,你的试验证实了么?

Hu.Ziming

unread,
Feb 15, 2012, 12:27:42 PM2/15/12
to linu...@googlegroups.com
嗯,实验只用了两个程序,这个是证实了,明天看看是不是跑多个程序试试
那我就奇怪了为啥原来测试用的那个就不行,加了tee的话那个SIGING就传不过去
有没有可能在管道中传不过去?

2012/2/16 fft fft <fft...@gmail.com>:
> 应该是没有用&弄到后台去的当前终端起的进程都会收到吧,你的试验证实了么?

fft fft

unread,
Feb 15, 2012, 12:34:05 PM2/15/12
to linu...@googlegroups.com
按我理解,是你正经用的那个tee之前的程序没有表现出响应SIGINT?是不是那个程序自己内部有什么逻辑因为tee或管道改变了它的输出缓存模式而受到影响了 ?

Hu.Ziming

unread,
Feb 15, 2012, 12:44:24 PM2/15/12
to linu...@googlegroups.com
唔,我明天再看看,那个程序是个command的程序,单线程。检查到ctrl-c后会往服务器发东西
但是奇怪的是我在那个程序中没看到signal的注册,明天细看看去.....

2012/2/16 fft fft <fft...@gmail.com>:
> 按我理解,是你正经用的那个tee之前的程序没有表现出响应SIGINT?是不是那个程序自己内部有什么逻辑因为tee或管道改变了它的输出缓存模式而受到影响了
> ?

fft fft

unread,
Feb 16, 2012, 11:12:10 AM2/16/12
to linu...@googlegroups.com
问题解决了么?

> ?

Hu.Ziming

unread,
Feb 16, 2012, 11:30:51 AM2/16/12
to linu...@googlegroups.com
没,没找到具体的地方
刚看了下两个程序,是一个命令行的东西调用so库里面的一个函数,库里面的那个函数设置的handler。自己刚试了一下,也没重现
我再想想怎么弄吧。机器现在不在我手上,用不了,呵呵

2012/2/17 fft fft <fft...@gmail.com>:
> 问题解决了么?

fft fft

unread,
Feb 16, 2012, 11:45:04 AM2/16/12
to linu...@googlegroups.com
我记得gdb是可以在信号上挂断点的,贴上去看看?

Hu.Ziming

unread,
Feb 18, 2012, 4:46:24 AM2/18/12
to linu...@googlegroups.com
唔,贴了上去看,先收到的SIGINT,然后收到的SIGPIPE,信号都对,不知道为啥没干活
奇怪的code啊.....

2012/2/17 fft fft <fft...@gmail.com>:
> 我记得gdb是可以在信号上挂断点的,贴上去看看?

fft fft

unread,
Feb 18, 2012, 6:08:03 AM2/18/12
to linu...@googlegroups.com

看到调哪个信号处理函数了么?

Reply all
Reply to author
Forward
0 new messages