zoukankan      html  css  js  c++  java
  • 进程创建

    1、获取ID

    #include <sys/types.h>
    #include <unistd.h>
    (1)pid_t getpid(void)          获取本进程ID。
    (2)pid_t getppid(void)        获取父进程ID。

    2、1进程创建——fork

    #include <unistd.h>
    pid_t fork(void)
    功能:创建子进程
    fork的奇妙之处在于它被调用一次,却返回两次,它可能有三种不同的返回值:
    (1)在父进程中,fork返回新创建的子进程的PID;

    (2)在子进程中,fork返回0;

    (3)如果出现错误,fork返回一个负值。

    在pid=fork()之前,只有一个进程在执行,但在这条语句执行之后,就变成两个进程在执行了,这两个进程的共享代码段,将要执行的下一条语句都是if(pid==0)。 两个进程中,原来就存在的那个进程被称作“父进程”,新出现的那个进程被称作“子进程”,父子进程的区别在于进程标识符(PID)不同。

    子进程的数据空间、堆栈空间都会从父进程得到一个拷贝,而不是共享。在子进程中对count进行加1的操作,并没有影响到父进程中的count值,父进程中的count值仍然为0。

    2、2进程创建——vfork

    #include <sys/types.h>
    #include <unistd.h>
    pid_t vfork(void)
    功能:创建子进程。


    区别:
    1. fork:子进程拷贝父进程的数据段
        vfork:子进程与父进程共享数据段
    2. fork:父、子进程的执行次序不确定
        vfork:子进程先运行,父进程后运行


    3、exec函数族

    exec用被执行的程序替换调用它的程序
    区别:
    fork创建一个新的进程,产生一个新的PID。exec启动一个新程序,替换原有的进程,因此进程的PID不会改变。

    (1)execl()

    #include<unistd.h>
    int execl(const char * path,const char * arg1, ....)
    参数:
    path:被执行程序名(含完整路径)。
    arg1 – argn: 被执行程序所需的命令行参数,含程序名。以空指针(NULL)结束。

    (2)execlp()

    #include<unistd.h>
    int execlp(const char * path,const char * arg1, ...)
    参数:
    path:被执行程序名(不含路径,将从path环境变量中查找该程序)。
    arg1 – argn: 被执行程序所需的命令行参数,含程序名。以空指针(NULL)结束。

    (3)execv()

    #include<unistd.h>
    int execv (const char * path, char * const argv[ ])
    参数:
    path:被执行程序名(含完整路径)。
    argv[]: 被执行程序所需的命令行参数数组。

    4、system()

    #include <stdlib.h>
    int system( const char* string )
    功能:
    调用fork产生子进程,由子进程来调用/bin/sh -c string来执行参数string所代表的命令。

    5、进程等待

    #include <sys/types.h>
    #include <sys/wait.h>
    pid_t wait (int * status)
    功能:
    阻塞该进程,直到其某个子进程退出。

  • 相关阅读:
    Jmeter之http性能测试实战 非GUI模式压测 NON-GUI模式 结果解析TPS——干货(十一)
    UI Recorder 自动化测试 回归原理(九)
    UI Recorder 自动化测试 录制原理(八)
    UI Recorder 自动化测试 整体架构(七)
    UI Recorder 自动化测试 配置项(六)
    UI Recorder 自动化测试 工具栏使用(五)
    UI Recorder 自动化测试 回归测试(四)
    UI Recorder 自动化测试 录制(三)
    UI Recorder 自动化测试工具安装问题疑难杂症解决(二)
    UI Recorder 自动化测试安装教程(一)
  • 原文地址:https://www.cnblogs.com/bzyzhang/p/5399642.html
Copyright © 2011-2022 走看看