计算机四级网络工程师(操作系统原理)模拟试卷20
操作系统原理——单选题
1.对于如下C语言程序int main()
{
pid_t pid;
int a= 20;
pid = fork();
if (pid==0)
printf(\\(A)
A. This is the son process, a=19 This is the dad process, a=21
B. This is the son process, a=18
C. This is the dad process, a=22
D. This is the dad process, a=19 This is the son process, a=21
解析:在UNIX类操作系统中,父进程通过调用fork()函数创建子进程,子进程获得与父进程地址空间相同的一份拷贝,包括文本、数据和bss段、堆以及用户栈,fork()函数被调用一次,却返回2次:一次是在调用进程中,一次是在新创建的子进程中,所以题目程序中的变量a,在父进程和子进程中存在2份,初值都是20,程序运行后子进程输出a=19,父进程输出a=21。故本题答案选择A选项。
2.对于如下C语言程序
int main()
{
pid_t pid;
int a = 20;
pid = fork();
if (pid ==0)
printf(\\(A)
A. This is the son process, a=21 This is the dad process, a=19
B. This is the son process, a=22
C. This is the dad process,a=18
D. This is the dad process, a=21 This is the son process, a=19
解析:在UNIX类操作系统中,父进程通过调用fork()函数创建子进程,子进程获得与父进程地址空间相同的一份拷贝,包括文本、数据和bss段、堆以及用户栈,fork()函数被调用一次,却返回2次:一次是在调用进程中,一次是在新创建的子进程中,所以题目程序中的变量a,在父进程和子进程中存在2份,初值都是20,程序运行后子进程输出a=21,父进程输出a=19。故本题答案选择A选项。
3.对于如下C语言程序
int main()
{
pid_t pid;
int a=1;
pid = fork();
if (pid==0)
printf(\\(A)
A. This is the son process, a=2
This is the dad process, a=0
B. This is the son process, a=2
C. This is the dad process,a=0
D. This is the dad process, a=2
This is the son process, a=0
解析:在UNIX类操作系统中,父进程通过调用fork()函数创建子进程,子进程获得与父进程地址空间相同的一份拷贝,包括文本、数据和bss段、堆以及用户栈,fork()函数被调用一次,却返回2次:一次是在调用进程中,一次是在新创建的子进程中,所以题目程序中的变量a,在父进程和子进程中存在2份,初值都是1,程序运行后子进程输出a=2,父进程输出a=0。故本题答案选择A选项。
4.对于如下C语言程序
int main()
{
pid_t pid;
int a=1;
pid = fork();
if (pid ==0)
printf(\\(A)
A. This is the son process, a=0
This is the dad process, a=2
B. This is the son process, a=0
C. This is the dad process, a=2
D. This is the dad process, a=0
This is the son process, a=2
解析:在UNIX类操作系统中,父进程通过调用fork()函数创建子进程,子进程获得与父进程地址空间相同的一份拷贝,包括文本、数据和bss段、堆以及用户栈,fork()函数被调用一次,却返回2次:一次是在调用进程中,一次是在新创建的子进程中,所以题目程序中的变量a,在父进程和子进程中存在2次,初值都是1,程序运行后子进程输出a=0,父进程输出a=2。故选择A选项。
5.对于如下C语言程序:
int main()
{
fork();
printf(\\(B)
A. 7
B. 14
C. 3
D. 28
解析:计算机程序设计中的fork()函数的返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。第一个fork()函数调用后将有两个进程,输出2个Hello;第二个fork()函数调用后将有4个进程,输出4个Hello;第三个fork()函数调用后将有8个进程,输出8个Hello;总计为2+4+8=14个Hello。故选择B选项。
6.对于如下C语言程序:
int main()
{
fork();
printf(\\(A)
A. 6
B. 2
C. 4
D. 8
解析:计算机程序设计中的fork()函数的返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。第一个fork()函数调用后将有两个进程,输出2个Hello;第二个fork()函数调用后将有4个进程,输出4个Hello;总计为6个Hello。故选择A选项。
7.对于如下c语言程序:
int main()
{
fork();
fork();
printf(\\(B)
A. 16
B. 20
C. 10
D. 4
解析:计算机程序设计中的fork()函数的返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。在第一个prinf打印输出hello之前有2个fork()函数,所以运行成功后会打印4(22)行hello;在第2个print打印输出hello之前有4个fork()函数,所以运行成功后会打印16(24)行hello;所以一共输出20行hello。
8.对于如下C语言程序:
int main()
{
fork();
fork();
printf(\\(C)
A. 2
B. 4
C. 8
D. 6
解析:计算机程序设计中的fork()函数的返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。每个printf输出“hello”都调用了2个fork()函数,故每个printf输出的“hello”是4行,一共输出8行“hello”。故选择C选项。
9.对于如下C语言程序
本文档预览:3600字符,共9292字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载