|
发表于 2011-1-2 10:28:52
|
显示全部楼层
Post by icoming;960395
这样子好像有时候会不行吧。比如说:shell一下子运行了很多程序,但是shell不能在接受到SIGCHLD信号的时候才调用wait()。因为这个时候,shell运行命令的时候应该阻塞才对的啊。
用上面的方法,shell会开始标准输入中读数据,这样会影响在上面运行的程序的执行。
没太看明白你说得意思,不过我认为用SIGCHLD是可以的,捕捉信号,然后调用wait,因为有SIGCHLD产生了,所以必然有一个进程需要等待处理,shell调用wait以后会立刻返回的。另外我觉得在处理的时候应该想办法让其他的SIGCHLD排队而不是丢弃掉。 |
|