关于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("创建进程失败!\n");
12         exit(1);
13     }
14     /* 如果pid为0则表示当前执行的是子进程 */
15     else if(pid==0)   
16     {
17         printf("这是子进程,进程标识符是%d\n",getpid());
18         execl("/mnt/hgfs/share/study/exec/son_process/exe","",NULL);
19     }
20     else
21     /* 否则为父进程 */
22     {
23         printf("这是父进程,进程标识符是%d\n",getpid());
24     }
25     printf("process end\n");
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("替换进程映像成功\n");
8     return 0;
9 }

结果:

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

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

上一篇:CF1340D Nastya and Time Machine


下一篇:VMware 15安装CentOS7