C Fork-如何确保首先运行父级?

C Fork-如何确保首先运行父级?,c,signals,fork,race-condition,C,Signals,Fork,Race Condition,因此,我正在用C编写一个Unix shell,并且遇到了竞争条件。我已经确定,如果在我的一个Fork()调用之后,我可以确保父对象在子对象之前运行,那么我可以解决这个问题。有什么方法可以使用信令或任何其他类型的进程间通信来实现这一点吗?您可以设置一个信号处理程序,让子进程等待它,例如SIGUSR1。我可以在调用Fork()的函数中实现这一点,还是必须设置另一个信号处理函数?如果(Fork==0)是孩子,从那一刻起,你可以在新的过程中做你需要的事情。不过,通常你会先做一些清理工作。不过,使用管道可

因此,我正在用C编写一个Unix shell,并且遇到了竞争条件。我已经确定,如果在我的一个Fork()调用之后,我可以确保父对象在子对象之前运行,那么我可以解决这个问题。有什么方法可以使用信令或任何其他类型的进程间通信来实现这一点吗?

您可以设置一个信号处理程序,让子进程等待它,例如SIGUSR1。

我可以在调用Fork()的函数中实现这一点,还是必须设置另一个信号处理函数?如果(Fork==0)是孩子,从那一刻起,你可以在新的过程中做你需要的事情。不过,通常你会先做一些清理工作。不过,使用管道可能更好,因为这样你就可以熟练地等待父级,直到它发送一些命令。我玩了一些管道,它似乎工作得很好。谢谢管道非常有效,尤其是因为父级所要做的就是关闭它以释放子级(其
read()
调用返回的读取字节数为零-EOF)。