单选题
9.
对于如下C语言程序
int main()
{
printf("Hello World\n");
fork();
printf("HelloWorld\n");
fork();
printf("Hello World\n");
}
在UNIX操作系统中正确编译链接后,其正确的运行结果是______。
A、
共打印出6行Hello World
B、
共打印出7行Hello World
C、
共打印出8行Hello World
D、
共打印出9行Hello World
【正确答案】
B
【答案解析】
fork()函数执行的特点是,只被调用一次,却会返回两次,一次是在调用进程(父进程)中,一次是在新创建的子进程中。如果标记第1个fork()函数为f1,第2个fork()函数为f2。则父进程调用f1产生的子进程代码与父进程一样,但起始执行指令是从f1开始执行的,所以共打印行数为1+f1+1+f2+1行。调用f1执行后打印行数为1+f2+1行,调用f2执行后打印行数为1行,所以共打印行数为7行。故本题答案选择B选项。
提交答案
关闭