嵌入式开发记录-day13 fork()函数

1、pid_t fork(void);

     在Linux操作系统下实现多进程,使用fork() 创建一个新的特殊的进程,该进程称为当前运行进程的子进程;使用fork()创建的新进程,会做以下一些事情:

  1、根据返回值不同,判断不同的结果;int ret = fork()

    fork()返回-1,表示创建新进程失败;

    fork()返回0,创建的是子进程if(ret == 0){} 表示此处执行子进程;

    fork()返回值大于0,当前的返回值为子进程的进程号PID,当前进程是子进程的父进程;

  2、获取进程号:

    getpid() 获取当前进程的进程号;

    getppid() 获取当前进程的父进程的进程号;

  3、当前进程P1调用fork(),成功创建子进程P2后;P1与P2共享代码段,拥有完全相同的代码;

    操作系统拷贝所有变量,P1与P2拥有几乎完全相同的堆栈,只不过P1与P2所存储代码的位置不同;类似于不同函数创建相同的变量;

    P2同时拥有P1程序执行的位置,也就是程序计数指针相同,会从相同的程序位置开始执行程序;两者的执行顺序,取决于操作系统算法;

2、exec函数族

 

  1、  execl()

    execlp()

    execle()

    execv()

    execvp()

    execve()

posted @ 2020-06-18 16:23  笑不出花的旦旦  阅读(101)  评论(0)    收藏  举报