我正在为操作系统测验学习,但不理解输出的含义。
if(fork())
fork()
这将产生什么结果。有人能解释一下吗?
我不理解这行代码:
if(fork())
编辑:
我所说的“输出”是指执行此代码将有多少个进程。
抱歉,我学习后有点头晕。
这是一个提示:if (fork())
只是写成了 if (fork() != 0)
的简洁方式。
if(x!=0)
其实是写作if(x)
的冗长表达方式。 :) - Vovanium也许你最好的方法就是试一试,阅读有关fork的文档,如果还是不明白,就针对你不理解的那部分提出更具体的问题。
首先尝试这个:
#include <stdio.h>
#include <unistd.h>
int main(int argc,char **argv){
int x,y=0;
x = fork();
if (x) y = fork();
printf("x: %d, y: %d\n",x,y);
return 0;
}
我曾经和你一样遇到过同样的问题。
::::::> if (fork())
的含义如下:
if (fork() !=0)
,正如你所知道的:
fork()
: 有三个返回值!
fork() = 0
表示子进程。
fork() < 0
表示出错。
fork() > 0
表示父进程。
因此:
if ( 0 != O )
==> false(在这种情况下,您不必执行两次 fork())
if (-123 != 0 )
==> True(是的,您需要执行两次 fork())。
if (5 != 0 )
==> true(是的,您需要执行两次 fork())。
祝你好运。
针对父级
if (fork()) is
被评估为
if(pid_of_child)
对于子进程,它被评估为:
if(0)
就是这样 :)