UNIX 网络编程系列之fork函数

对于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!”?

答案是一个

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引用:CSDN jason314 一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函...
    _Nullptr阅读 20,957评论 1 19
  • Linux 进程管理与程序开发 进程是Linux事务管理的基本单元,所有的进程均拥有自己独立的处理环境和系统资源,...
    JamesPeng阅读 7,174评论 1 14
  • 1.进程 1.1多线程的引入 现实生活中 有很多的场景中的事情是同时进行的,比如开车的时候手和脚共同来驾驶汽车,再...
    TENG书阅读 3,616评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,899评论 18 399
  • 她说: 我读初中的时候很喜欢一个男生, 有一天, 他不知道为什么被打了, 一个人坐在操场上很可怜的样子。 我就买了...
    菀蔸阅读 1,560评论 0 1