UNIX 进程 : fork() and wait()

标签 unix fork wait waitpid

这是我关于 fork() 以及将要发生的相应 wait() 的问题:

在我的 main() 中,我调用了一个函数,比如说使用 fork() 系统调用的 function(),但是我希望 function() 返回而不等待子进程终止,因此 main() 必须在终止之前等待它们。

那么,main()是否可以对已在主体中fork()ed的子进程调用wait()另一个名为我的 this main() 的函数?

如果是,我是否必须通过变量将子进程的 pid 传递给 main()

最佳答案

如果我正确地理解了这个问题,你会想要这样的东西:

  • main 调用 function
  • function调用fork创建child/ren,并在父进程中返回
  • main 稍后在 child/ren 上调用 wait

这很好…名义上,您不必必须将子进程的 PID 传递回 main,因为您只需调用wait 获取任何恰好存在的子进程;但是,要使用 waitidwaitpid,您需要/想要将它们提供给 main。您可以将 PID 返回到链表或 NULL 终止数组等结构中的 main,或者创建某种文件范围或全局变量来包含该列表。

Linux 手册页中有关于 wait(2) 的详细说明(man 2 wait 左右)

关于UNIX 进程 : fork() and wait(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8854801/

相关文章:

c - 使用进程、fork 命令

c - 进程ID,waitpid

javascript - 检查进程 A 写入的文件是否准备好被进程 B 读取

shell - ssh 到另一个具有不同用户名的服务器

linux - AIX 上的 CPU 用户时间和系统时间

firefox - 如何从 Ubuntu 命令行在后台启动 Firefox 中的 URL?

c - getpid() 返回意外值

javascript - 如何创建 JavaScript 延迟函数

java - 如何进行线程交互?

sql - 如何使用 C 从 .csv 文件加载到 SQL 数据库