关于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)