Linux系统编程:exec函数

Exec函数:

当使用fork函数创建子进程后,子进程往往会调用一种exec函数以执行另一个程序,当进程调用一种exec函数时,该进程执行的程序完全被替换为新的程序,而新的程序则从其main函数开始执行,因为调用exec并不创建新进程,而是用一个全新的程序替换了当前进程的正文,数据和堆栈。

 

我们经常说exec函数,其实并没有exec这个函数,exec是一系列函数的总称:

这些exec函数的功能都是把进程的代码替换成另外一份全新的代码,只是在参数上有些不同,execl,execle,execlp这三个函数参数是不定的,新程序有多少个命令行参数,就要传递多少个参数,每个命令行参数都要独立成为一个参数,execv,execve,execvp可以将新程序的所有命令行参数都放在第二个参数中进行传递。Execle,execve可以传递环境变量,其他函数要调用进程中的environ变量为新程序复制当前环境。Execlp,execvp第一个参数为文件名,其他四个函数第一个参数为路径名。

这里我们用一个例子来演示一下execl函数是如何替换程序的

在exec.c文件中我们创建一个子进程,并且在子进程中调用execl函数,切换到当前目录下的可执行文件main,注意execl函数的最后一个参数要传一个NULL(也就是(char*)0),这样系统才会知道该函数参数传递完成。

在main文件中我们输出一行提示符即可

运行结果如下

猜你喜欢

转载自blog.csdn.net/Mr_H9527/article/details/82725368
今日推荐