【发布时间】:2017-07-05 22:25:03
【问题描述】:
例如,如果我打电话
if (!fork())
这是否会创建一个类似调用的新进程
if (fork())
还是没有?
【问题讨论】:
-
[在这两种情况下] 只有在实际调用了 fork() 时才能评估条件。
-
这不是你可以自己测试的东西吗?
例如,如果我打电话
if (!fork())
这是否会创建一个类似调用的新进程
if (fork())
还是没有?
【问题讨论】:
同样,fork 在检查之前先进行评估。
if (!fork()) 对于函数本身与 if (fork()) 相同,但对于 if 语句检查不同。
【讨论】:
当然可以。为了执行
if (! <expression>)
它首先必须计算<expression>,然后它才能反转表达式的布尔值并用if 对其进行测试。当表达式为fork() 时,它调用fork 函数,该函数创建一个新进程,然后在子进程和父进程中都返回一个值。
它本质上只是以下简称:
pid_t pid = fork();
if (!pid)
【讨论】: