关于fork进程创建和execl函数的联系

Posted wueg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于fork进程创建和execl函数的联系相关的知识,希望对你有一定的参考价值。

一、介绍

  fork函数是系统创建进程函数、而当我们需要子进程去执行另一个程序,这时我们可以使用execl函数将子进程替换成新的进程映像,使子进程调用新的程序。

二、execl的函数

      1. 函数原型

          int execl(const char *path, const char *arg, ...);

      2.参数:

    path: 表示你要启动程序的名称包括路径名。

         arg:   表示启动程序所带的参数,一般第一个参数为要执行命令名,不是带路径且arg必须以NULL结束。

三、例子

进程调用execl函数替换进程映像:

 1 #include <unistd.h>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 
 5 int main()
 6 {
 7     pid_t pid;        //进程标识符
 8     pid = fork();     //创建一个新的进程
 9     if(pid<0)
10     {
11         printf("创建进程失败!
");
12         exit(1);
13     }
14     /* 如果pid为0则表示当前执行的是子进程 */
15     else if(pid==0)   
16     {
17         printf("这是子进程,进程标识符是%d
",getpid());
18         execl("/mnt/hgfs/share/study/exec/son_process/exe","",NULL);
19     }
20     else
21     /* 否则为父进程 */
22     {
23         printf("这是父进程,进程标识符是%d
",getpid());
24     }
25     printf("process end
");
26     sleep(1);
27     return 0;
28 }

替换进程映像后程序执行代码:

1 #include <unistd.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 
5 int main()
6 {
7     printf("替换进程映像成功
");
8     return 0;
9 }

结果:

技术图片

以上是关于关于fork进程创建和execl函数的联系的主要内容,如果未能解决你的问题,请参考以下文章

linux进程---exec族函数(execl, execlp, execle, execv, execvp, execvpe)

Linux_进程替换(execl...)

关于Linux的fork()?

execl调用的程序执行了多少次?

fork与 execve的区别

关于Linux系统中execlp函数的用法