当前位置:首页 > 文章 > 四级网络工程师 > 正文内容

对于如下 C 语言程序

四级网络工程师3个月前 (06-19)
int main()
{
pid_t pid;
int a=5;
pid = fork();
if(pid==0)
printf("This is the son process, a=%d\n", --a);
else
printf("This is the dad process, a=%d\n", ++a);
}



在 UNIX 操作系统中正确编译链接后执行,其运行结果是


This is the son process, a=4 This is the dad process, a=6


This is the son process, a=4


This is the dad process, a=6


This is the dad process, a=4 This is the son process, a=6


答案    

This is the son process, a=4 This is the dad process, a=6



解析    


这个程序在调用 fork() 函数后创建了一个新的子进程。fork() 函数在两个进程中都会返回一次。在父进程中,fork() 返回子进程的进程标识符(PID);在子进程中,fork() 同样返回,但返回值是 0。接下来,每个进程会根据返回值的不同执行不同的 printf 语句。


具体来看:


如果 fork() 返回值为 0,表示当前进程是子进程,程序会执行 printf("This is the son process, a=%d\n", --a);,此时 a 的值为 5,递减后输出为 4。

如果 fork() 返回值不为 0(即父进程),程序会执行 printf("This is the dad process, a=%d\n", ++a);,此时 a 的值为 5,递增后输出为 6。

因此,程序的正确运行结果应当是:



相关文章

在组成计算机系统的各类资源中,主要包含有硬件部件以及

代码和数据键盘鼠标和显示器操作系统各类应用软件答案    代码和数据解析...

在操作系统中建立了用于记录各种软硬件资源信息的数据结构,该数据结构的用途是

提供系统软件编程工具所必须的资源了解用户需求和当前资源使用情况,对资源进行有效组织管理提供为用户服务...

操作系统是一个可以从多视角考察的软件系统。下列关于操作系统的叙述中,哪一个是错误的

从应用角度看,操作系统是人机交互的接口从软件设计和开发的角度看,操作系统是一个应用软件从网络攻击者角...

操作系统是一个可以从多视角考察的软件系统。下列关于操作系统的叙述中,哪一项是错误的

从应用角度看,操作系统是一个工具软件从软件设计和开发的角度看,操作系统是一个基础软件和工具软件从网络...

操作系统是一个可以从多视角考察的软件系统。下列关于操作系统的叙述中,哪一个是错误的

从应用角度看,操作系统是人机交互的接口从软件设计和开发的角度看,操作系统是一个基础软件和工具软件从网...

组成操作系统的主要部分通常是进程线程管理、内存管理、设备管理和

文件管理P、V 操作管理死锁管理备份管理答案    文件管理解析 &nb...