码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2020-06-07 09:24:44      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:使用   调用exe   否则   必须   子进程   gfs   style   char   get   

一、介绍

  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函数的联系

标签:使用   调用exe   否则   必须   子进程   gfs   style   char   get   

原文地址:https://www.cnblogs.com/wueg/p/13058213.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!