美文网首页
UNIX 网络编程系列之fork函数

UNIX 网络编程系列之fork函数

作者: IT孤独者 | 来源:发表于2017-01-17 17:08 被阅读0次

对于fork函数的理解有两点是我匪夷所思的:

  1. 为什么这个函数会有两个返回值
  1. 当这个函数返回时,父进程和子进程都会执行哪段代码
#include <iostream>
using namespace std;
int main() {
    int pid;

    if ( (pid=fork()) == 0) {
        cout << "child process" << endl;
    }

    cout << "Hello, World!" << endl;
    return 0;
}

上述代码会输出几个“Hello, World!”?

答案是两个。大致的描述下我的理解。

  1. 第一次语句 (pid=fork()) == 0 返回子进程的ID,子进程ID 不等于0 ,所以不进入判定式。 这个是在父进程中返回的。
    第二次语句 (pid=fork()) == 0 会返回0, 这个0是在子进程中返回的,判定式成立,进入判定式的内容,也就是子进程会执行if语句中的内容,而父进程不会执行if语句中的内容
  2. 父进程会执行一次“Hello, World!”
  3. 子进程执行完以后,回继续执行后面的代码,也就是说子进程和父进程会共享代码段!!!

fork函数应该是和系统相关的,我并不知道windows中会有这个类似的函数。

例子:

#include <iostream>
using namespace std;
int main() {
    int pid;

    if ( (pid=fork()) == 0) {
        cout << "child process" << endl;
        exit(0);
    }

    cout << "Hello, World!" << endl;
    return 0;
}

上述代码会输出几个“Hello, World!”?

答案是一个

相关文章

网友评论

      本文标题:UNIX 网络编程系列之fork函数

      本文链接:https://www.haomeiwen.com/subject/ypnmbttx.html