以原子方式 fork/vfork、exec 和 waitpid

问题描述

假设进程A调用fork

    pid = fork();
    ...
    waitpid( pid,...);

在这调用(fork 和 waitpid)之间,由 fork() 创建的 proccess-B 是否有可能完成?然后一些新的进程-C 启动并获得一个等于进程-B 的旧 pid 的 pid。然后waitpid将等待进程C的结束,而不是B。

exec-family 调用如果成功则不会返回值和控件。 exec 启动新进程而不是当前进程,但保留进程 pid。将 fork/vfork + exec + waitpid 作为真正的“原子”操作并获得由 exec 创建的进程的结果是否有保证?

bash/shell 是否以“原子”方式运行、等待命令并返回其结果?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)