我正在做一个构建简单shell的任务,并且尝试添加一些目前不需要的功能,但是在使用管道时遇到了问题。
一旦我的命令被解析,我就会派生一个进程来执行它们。这个进程是一个子程序,如果只剩下一个命令,它将执行该命令,否则它将分叉。父进程将执行第一个命令,子进程将处理其余部分。管道被设置并正常工作。
然后,我的主进程调用
我尝试为应执行的每个命令调用
如何强制我的主线程等待所有子进程(包括子进程的子进程)退出?
一旦我的命令被解析,我就会派生一个进程来执行它们。这个进程是一个子程序,如果只剩下一个命令,它将执行该命令,否则它将分叉。父进程将执行第一个命令,子进程将处理其余部分。管道被设置并正常工作。
然后,我的主进程调用
wait()
,然后输出提示符。当我执行像ls -la | cat
这样的命令时,提示符会在cat的输出之前打印出来。我尝试为应执行的每个命令调用
wait()
一次,但第一次调用有效,所有后续调用都返回ECHILD
。如何强制我的主线程等待所有子进程(包括子进程的子进程)退出?