【问题标题】:Does !fork() create a process? [closed]!fork() 会创建一个进程吗? [关闭]
【发布时间】:2017-07-05 22:25:03
【问题描述】:

例如,如果我打电话

if (!fork())

这是否会创建一个类似调用的新进程

if (fork())

还是没有?

【问题讨论】:

  • [在这两种情况下] 只有在实际调用了 fork() 时才能评估条件。
  • 不是你可以自己测试的东西吗?

标签: c process fork


【解决方案1】:

同样,fork 在检查之前先进行评估。

if (!fork()) 对于函数本身与 if (fork()) 相同,但对于 if 语句检查不同。

【讨论】:

  • if (fork()){//父进程} else //子进程
  • if (!fork()) { //子进程} else //父进程
【解决方案2】:

当然可以。为了执行

if (! <expression>)

它首先必须计算&lt;expression&gt;,然后它才能反转表达式的布尔值并用if 对其进行测试。当表达式为fork() 时,它调用fork 函数,该函数创建一个新进程,然后在子进程和父进程中都返回一个值。

它本质上只是以下简称:

pid_t pid = fork();
if (!pid)

【讨论】:

    猜你喜欢
    • 2014-02-11
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2023-03-15
    • 2017-01-27
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多