对于运行UNIX系统的以下程序: void main() { printf("Hellol"); fork(); printf("He1102"); } 执行后的输出结果是:( )

admin2019-12-10  31

问题 对于运行UNIX系统的以下程序:
void main()
{
printf("Hellol");
fork();
printf("He1102");
}
执行后的输出结果是:(    )

选项 A、Hello1 Hello2
B、Hello1 Hello2 Hello2
C、Hello2 Hello1 Hello2
D、Hello1 Hello1 Hello2 Hello2

答案A

解析 fork系统调用的功能是创建一个新的进程,如果不加控制,创建后的子进程和父进程都将执行fork()后面的语句。fork()执行时,对父进程和子进程返回不同的值,对于进程返回0,表示创建成功;对父进程返回大于0的值,表示子进程的pid号,同时UNIX是分时操作系统,父子进程执行的顺序是不确定的,有多种结果。
A对应的情况是子进程创建失败。
D对应的情况是创建成功后,父子进程执行第二个printf语句,同时,由于printf语句没有加上换行符,缓存中的数据不会被马上刷新,子进程继承了父进程的数据,子进程会输出Hello1 Hello2,但是要注意,此处的Hellol并不是说子进程又执行了第一个printf语句。
转载请注明原文地址:https://kaotiyun.com/show/Uo3i777K
0

随机试题
最新回复(0)