多进程程序设计

一。多进程编程

  1.函数学习

    (1).创建进程

      1.

       函数名        fork

       函数原型    pid_t fork(void)

       函数功能    创建一个子进程

       所属头文件   <unistd.h>

       返回值     成功时:在父进程中返回子进程的pid

                     在子进程中返回是0

               失败时:子进程返回的-1

       参数说明    无参数

      2.      

       函数名        vfork

       函数原型    pid_t vfork(void)

       函数功能    创建一个子进程并阻塞父进程

       所属头文件   <sys/types.h> <unistd.h>

       返回值     成功时:在父进程中返回子进程的pid

                     在子进程中返回是0

               失败时:子进程返回的-1

       参数说明    无参数

      3.

        #include <unistd.h>
        #include <stdio.h>

        void main(void)
        {
          pid_t pid;
          int count = 0;
          pid = fork();
          count++;
          printf("count = %d ",count);
          exit(0);
         }

      思考得出什么结果?

      4.fork 对比 vfork

       (1) fork: 子进程用于独立的数据段,堆栈。

          vfork:子进程与父进程共享数据段,堆栈。

       (2) fork:父、子进程的执行次序不确定

          vfork:子进程先运行、父进程后运行

    (2).进程退出

      exit(0);

    (3).进程等待     

       函数名        wait

       函数原型    pid_t wait(int *status)

       函数功能    挂起调用它的进程,直到其子进程结束

       所属头文件   <sys/types.h> <sys/wait.h>

       返回值     成功时:返回终止的那个子进程的id

               失败时:-1

       参数说明    status:记录子进程的退出状态

    (4).执行程序       

       函数名        execl

       函数原型    int execl(const char*)

       函数功能    运行可执行文件

       所属头文件   <sys/types.h> <sys/wait.h>

       返回值     成功时:不返回

               失败时:才返回

       参数说明    pathname:要运行的可执行文件的路径

               arg:可执行文件运行需要的

原文地址:https://www.cnblogs.com/lvxiaoning/p/4944667.html