|
楼主 |
发表于 2004-12-17 10:21:30
|
显示全部楼层
我是在编一个shell,我现在遇到的问题是如果shell运行了很多的命令,shell就必须调用wait()或waitpid()等待子进程。可是shell上有进程运行的时候,shell应该是处于阻塞状态直到所有运行的命令退出。我想shell应该是调用了wait()或waitpid()来阻塞自己的吧。如果是接受了SIGCHLD信号,然后再调用wait()或waitpid()就没法阻塞自己知道所有的命令退出了。
比如说我在/dev目录下运行了ls|more。当ls|more在运行的时候,shell应该被阻塞,否则shell就会从标准输入中读数据,这样more就不能从标准输入得到数据了。可是ls,more这两个命令退出的顺序是未定的,可能使ls输出完所有的文件先退出,也可能是more得到q命令先退出。所以我不知道该怎么调用waitpid()让这两个命令都退出僵尸状态。这里考虑到作业处理所以我想用waitpid()来等待命令退出 |
|