下面的程序执行输出几个hello?
1
2
3
4
5
6
7
8
9
|
#include<stdio.h>
#include <unistd.h>
int
main( ) {
fork( );
fork( );
fork( );
printf
(“hello\n”);
return
0;
}
|
- 3
- 4
- 6
- 8
正确答案:D
fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值: 新创建的子进程返回一次,父进程返回一次
1)在父进程中,fork返回新创建子进程的进程ID;
2)在子进程中,fork返回0;
3)如果出现错误,fork返回一个负值;
类似题目:http://www.nowcoder.com/questionTerminal/1f6cc9c0ef354f86b1727c6c030a1a19
fork().调用系统调用创建于原来进程相同的进程,使得进程数加倍,变成2个;
fork() //2个相同的进程
fork() //4个相同进程
fork() //8个相同的进程