美团2016校园招聘 研发工程师(一)
下面的程序执行输出几个hello?
#include<stdio.h>
#include <unistd.h>
int main( ) {
fork( );
fork( );
fork( );
printf(“hello\\n”);
return 0;
}
A 3
B 4
C 6
D 8
正确答案 : D
知识点
fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
1)在父进程中,fork返回新创建子进程的进程ID;
2)在子进程中,fork返回0;
3)如果出现错误,fork返回一个负值;
fork(); //2个进程
fork(); //4个进程
fork(); //8个进程
printf(“hello\n”);