C 如何在父进程中选择等待和不等待?

C 如何在父进程中选择等待和不等待?,c,process,fork,C,Process,Fork,假设我有两个函数x和y,这两个函数都在调用另一个函数z 我在这个函数中分叉z 我想做的是以下几点 如果我的调用函数是x。等孩子在教室里讲完 父进程 否则,如果调用函数为y。不要等待孩子,(好像它在等你。) 正在同时运行) 我怎样才能做到这样的行为?如果可能的话 或者我必须创建两个独立的函数z1和z2 在z1i分叉并等待,在z2i分叉并不等待 我想在c中这样做,你可以把一个参数传递给z,指示z是否应该等待孩子。或者,您可以让z返回子进程的进程ID,而无需等待。然后您可以在x中手动调用waitpid

假设我有两个函数xy,这两个函数都在调用另一个函数z

我在这个函数中分叉z

我想做的是以下几点

  • 如果我的调用函数是x。等孩子在教室里讲完 父进程

  • 否则,如果调用函数为y。不要等待孩子,(好像它在等你。) 正在同时运行)

  • 我怎样才能做到这样的行为?如果可能的话

    或者我必须创建两个独立的函数z1z2

    z1i分叉并等待,在z2i分叉并不等待


    我想在c中这样做,你可以把一个参数传递给
    z
    ,指示
    z
    是否应该等待孩子。或者,您可以让
    z
    返回子进程的进程ID,而无需等待。然后您可以在
    x
    中手动调用
    waitpid
    ,以明确等待
    z
    分叉的进程:

    waitpid(z(), NULL, 0);
    

    当然,您还需要进行错误处理。

    将“等待”布尔值传递到z有什么问题?如果选择不等待,我将如何终止程序。它只是在最后冻结。我怎么能终止it@Pro我需要更多的信息来回答这个问题。你能发布显示这个问题的代码吗?如果你问一个新问题可能是最好的。基本上,我是在一行中执行execvp,其中包含来自文件的许多命令。我正在尝试将所有命令一起运行。这样结果就可以混在一起了。一切正常,只是当它完成后,不会退出程序terminal@Pro对不起,不知道。向我展示代码(在单独的问题中)或做一个简单的示例,然后我可以帮助您。