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

标签 c process fork

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

我 fork 了这个函数 z

我想做的是以下内容。

  1. 如果我的调用函数是x。等待 child 完成 父进程

  2. else 如果调用函数是y。不要等待 child ,(好像 同时运行)。

我怎样才能实现这样的行为,如果可能的话?

还是我必须制作两个单独的函数 z1z2

z1 我 fork 并等待,在 z2 我 fork 但不等待。

我想用c来做

最佳答案

您可以将一个参数传递给 z 以指示 z 是否应该等待 child 。或者,您可以让 z 返回子进程的 ID 而无需等待它。然后你可以手动调用 x 中的 waitpid 来显式等待 z fork 的进程:

waitpid(z(), NULL, 0);

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

关于c - 在父进程中如何选择等待和不等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35258555/

相关文章:

c - 为什么父进程必须在调用 wait() 之前关闭管道的所有文件描述符?

c# - 如何在远程计算机上执行命令?

c - Fork - 在 fork 进程之间共享列表

c - 2 编译器错误预期 ';' 在声明列表的末尾和字段 'x' 声明为函数?

c++ - Allegro 获取当前窗口大小

c - 使用 fscanf 读取整数时遇到问题

c - 使用 fork() 确定所有命令行参数的行数

c - 将文件中的所有行读取到数组中

c - 使用管道连接子进程

multithreading - 调用 ls 或 rm 之类的二进制文件是不好的 Perl 做法吗?