[11][9][单选]对于如下 C 语言程序
int main( { printf("Hello World\n"; fork(); printf("Hello World\n"); fork(); printf("Hello World\n"; }
在 UNIX 操作系统中正确编译链接后,其正确的运行结果是
共打印出 6 行 Hello World
共打印出 7 行 Hello World
共打印出 8 行 Hello World
共打印出 9 行 Hello World
答案
共打印出7行Hello World
解析
`fork()`函数执行的特点是,只被调用一次,却会返回两次,一次是在调用进程(父进程)中,一次是在新创建的子进程中。如果标记第1个`fork()`函数为f1,第2个`fork()`函数为f2。则父进程调用f1产生的子进程代码与父进程一样,但起始执行指令是从f1开始执行的,所以共打印行数为1+f1+1+f2 +1行。调用f1执行后打印行数为1+f2+1行,调用f2执行后打印行数为1行,所以共打印行数为7行。 【涉及考点】 第3章 进程线程模型
转载请注明出处。