美文网首页
fork函数

fork函数

作者: 烟花繁江尘辗 | 来源:发表于2021-07-05 17:39 被阅读0次
    • 含义

      fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本

    • 返回值

      有三种不同的返回值:
      1)在父进程中,fork返回新创建子进程的进程ID;
      2)在子进程中,fork返回0;
      3)如果出现错误,fork返回一个负值;

    • 例子

      #include <unistd.h>
      #include <stdio.h>
      int main ()
      {
              pid_t fpid; //fpid表示fork函数返回的值
              int count=0;
              fpid=fork();
              if (fpid < 0)
                      printf("error in fork!");
              else if (fpid == 0) {
                      printf("i am the child process, my process id is %d\r\n",getpid());
                      count++;
              }
              else {
                      printf("i am the parent process, my process id is %d\r\n",getpid());
                      count++;
              }
              printf("统计结果是: %d\r\n",count);
              return 0;
      }
      
      //结果
      i am the parent process, my process id is 27885
      统计结果是: 1
      i am the child process, my process id is 27886
      统计结果是: 1
      
    • 解析

    fork函数之后,操作系统会复制一个与父进程完全相同的子进程,虽说是父子关系,但是在操作系统看来,他们更像兄弟关系,这2个进程共享代码空间,但是数据空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝,指令指针也完全相同,但只有一点不同,如果fork成功,子进程中fork的返回值是0,父进程中fork的返回值是子进程的进程号,如果fork不成功,父进程会返回错误。可以这样想象,2个进程一直同时运行,而且步调一致,在fork之后,他们分别作不同的工作,也就是分岔了

    相关文章

      网友评论

          本文标题:fork函数

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