对于如下C语言程序 int main() { pid_t pid; int x=1; pid = fork(); if(pid==0) printf("I am the child process, x=%d\n", ++x); else printf("I am the parent process, x=%d\n", --x); } 在UNIX操作系统中正确编译链接后,其正确的运行结果是A.I am the child process, x=2B.I am the parent process, x=

题目

对于如下C语言程序 int main() { pid_t pid; int x=1; pid = fork(); if(pid==0) printf("I am the child process, x=%d\n", ++x); else printf("I am the parent process, x=%d\n", --x); } 在UNIX操作系统中正确编译链接后,其正确的运行结果是

A.I am the child process, x=2

B.I am the parent process, x=0

C.I am the parent process, x=2

D.I am the child process, x=0


相似考题
更多“对于如下C语言程序 int main() { pid_t pid; int x=1; pid = fork(); if(pid==0) printf("I am t ”相关问题
  • 第1题:

    请选出以下程序的输出结果_______。 includesub(int*s,inty){ static int t=3,y=s[t];t

    请选出以下程序的输出结果_______。 #include<stdio.h> sub(int*s,inty) { static int t=3, y=s[t];t-; } main() { int a[]={1,2,3,4},i,x=0; for(i=0;i<4;i++){ sub(a,x);printf("%d",x);} printf("\n"); }

    A.1234

    B.4321

    C.0

    D.4444


    正确答案:C
    解析:x作为函数sub()的实参时,函数对x值的改变没有返回主函数,并不能使得x的值变化,所以在打印时,x的值是始终不变的,即为0。

  • 第2题:

    请选出以下程序的输出结果()。includesub(int *s,int y){static int t=3; y=s[t];t--;}

    请选出以下程序的输出结果( )。 #include <stdio.h> sub(int *s,int y) { static int t=3; y=s[t];t--; } main() { int a[]={1,2,3,4},i,x=0; for(i=0;i<4;i++) { sub(a,x);printf("%d",x); } printf("\n"); }

    A.1234

    B.4321

    C.0

    D.4444


    正确答案:C
    解析:本题考查函数的形参和实参的关系。函数sub将实参x的值传给形参y,y值的改变不能使x的值发生改变,所以输出的x值始终为0。

  • 第3题:

    UNIX操作系统中,fork()系统调用用于创建进程。仔细阅读、分析下列程序,假设程序正确运行并创建子进程成功,那么,输出到屏幕的正确结果是main() { pid_t pid; pid = fork(); if (pid = = 0) printf ("Hello World\n"); else if (pid >0) printf ("Hello World\n"); else printf ("Hello World\n"); }

    A.什么都没有

    B.1行Hello World

    C.2行Hello World

    D.3行Hello World


    正确答案:C

  • 第4题:

    嵌入式Linux操作系统中任务的创建过程如下,以下说法正确的是(53)。

    void main( )

    { int pid;

    pid= fork( )

    if(pid>0)

    printf("parent task");

    else if(pid= =0)

    { printf("child task") ;

    execvp ("MyTash", NULL);

    }

    }

    A.子任务的创建基于fork/exec模型

    B.子任务的创建基于spawn模型

    C.先为子任务分配内存空间,再分配相应的数据结构

    D.直接为子任务分配一个全新的地址空间,然后再将其代码装入运行


    正确答案:A
    解析:fork/exec模型和spawn模型创建任务时,都要先为新任务分配相应的数据结构,然后再为新任务分配内存空间。这两种模型的主要差别在于内存的分配方式,在fork/exec模型中,首先调用fork函数为新任务创建一份与父任务完全相同的内存空间,然后再调用exec函数装入新任务的代码,并覆盖原父任务的内容。而spawn模型则直接为子任务分配一个全新的地址空间,然后再将其代码装入运行。

  • 第5题:

    有以下程序:include void f(int * x,int * y) int t;t= *x; *x= *y; *y=t;main ( ){in

    有以下程序:#include <stdio.h>void f(int * x,int * y) int t; t= *x; *x= *y; *y=t;main ( ){ int a[8] = { 1,2,3,4,5,6,7,8} ,i, * p, * q; p=a;q =&a[7]; while(p<q) { f(p,q) ;p ++ ;q --; } for(i =0;i<8;i ++ ) printf(" % d," ,a[i]); }程序运行后的输出结果是( )。

    A.8,2,3,4.,5,6,7,1,

    B.5,6,7,8,1,2,3,4,

    C.1,2,3,4,5,6,7,8,

    D.8,7,6,5,4,3,2,1,


    正确答案:D
    解析:程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。在main函数中,通过P=a;q=&a[7];指针变量p指向数组的第一个元素,指针变量q指向数组的最后一个元素。通过调用函数f(p,q)进行前后对称位置上的数组元素的交换。当while循环4次(即p=q)后,a数组中各元素的值分别为8,7,6,5,4,3,2,1,所以程序输出的结果为:8,7,6,5,4,3,2,1,