【问题标题】:Why is the result of fork system call displayed in one cmd?为什么fork系统调用的结果显示在一个cmd中?
【发布时间】:2021-06-27 15:46:59
【问题描述】:
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>

int value = 5; 
int main(){
pid_t pid;
pid = fork();

if(pid ==0){
    value+=15;
    printf("CHILD: value = %d\n",value);
    return 0;
}
else if(pid>0){
    wait(NULL);
    printf("PARENT: value = %d",value);
    return 0;
}
    
}

这段代码的执行结果如下:

CHILD: value = 20                                                                                       
PARENT: value = 5 

然后,在这个过程中,发生了两个编译过程,据了解,第一个代码和fork复制的代码分别被执行了。

但是为什么没有两个cmd窗口,而是一个窗口有两个结果值呢?我想找到这个问题的答案。

【问题讨论】:

    标签: process operating-system fork


    【解决方案1】:

    发生这种情况是因为 cmd 窗口的进程与您的程序不同。

    一旦您的程序启动,它会创建一个新进程,该进程在 cmd 上运行。当 fork 发生时,它将创建一个在同一窗口上运行的新进程。

    【讨论】:

    • 感谢您的回复!我明白。那么,我上面说了,内容是一样的,但是我能理解不同的可执行文件是在一个cmd窗口中编译的吗?
    猜你喜欢
    • 2016-04-30
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2019-01-05
    • 2016-10-03
    • 2012-02-02
    • 2015-12-22
    • 2013-10-19
    相关资源
    最近更新 更多