相关函数:fork, execle, execlp, execv, execve, execvp
头文件:#include <unistd.h>
定义函数:int execl(const char * path, const char * arg, ...)
函数说明:execl()用来执行参数path 字符串所代表的文件路径, 接下来的参数代表执行洞穗该文件时传递过去的argv(0), argv[1], ..., 最后一个参数必须用空指针(NULL)作竖耐结束.
返回值:如果执行成功则函数不会返余颤春回, 执行失败则直接返回-1, 失败原因存于errno 中.
范例
#include <unistd.h>
main()
{
execl("/bin/ls", "ls", "-al", "/etc/passwd", (char *)0)
}
执行:
/*执行/bin/ls -al /etc/passwd */
-rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd
在子进程的虚拟地址空间里加载新的映像,需要使用系统提供的一系列函数:ff35e3820794f8ed5abf1246cb21a832.png
他们的作用都是执行一个文件李早,当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行。当然,exec系列的函数也可以将当前进程替换掉。例如:在shell命令行执行ps命令,实际上是shell进程调用fork复制一个新的子进程,在利用exec系统调用将新产生的子进程完全替换成ps进程。
exec系列函数(execl、execlp、execle、execv、execvp)包含头文件
功能:
用exec函数可以把当前进程替换为一个新进程,且新掘扰信进程与原进程有相同的PID。exec名下是由多个关联函数组成的判轮一个完整系列,
创建方法如下:execl("/bin/touch","touch","./XX")在当前目录下创建胡拍敏XX文裤枝件;
execl函数的用法如下:
fork, execle, execlp, execv, execve, execvp
Windows下头文件如下:
#include <process.h>
Linux下头文件如下:
#include <unistd.h>
函数定义如下:
int execl(const char *path, const char *arg, ...)
函数说明如下:
execl()其中后缀"l"代表list也就是参数列表的意思,第一参数path字符指针所指向要执行的文件贺行路径, 接下来的参数代表执行该文件时传递的参数列表:argv[0],argv[1]... 最后一个参数须用空指针NULL作结束。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)