zoukankan      html  css  js  c++  java
  • 多进程程序设计

    一。多进程编程

      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:可执行文件运行需要的

  • 相关阅读:
    课堂检测求一个数的各个位
    猜数字
    登录界面
    课后作业01
    java语言基础问题
    大道至简第一张用java撰写伪代码
    阅读“大道至简”的读后感
    iOS 瀑布流的基本原理
    iOS 生成二维码
    CNContact对通讯录的基本使用(第二篇)
  • 原文地址:https://www.cnblogs.com/lvxiaoning/p/4944667.html
Copyright © 2011-2022 走看看