您的位置:首页 > 运维架构 > Linux

Linux下execl函数学习

2015-09-08 10:50 309 查看
Linux下头文件

#include <unistd.h>

函数定义

int execl(const char *path, const char *arg, ...);

函数说明:

execl()其中后缀"l"代表list也就是参数列表的意思,第一参数path字符指针所指向要执行的文件路径, 接下来的参数代表执行该文件时传递的参数列表:argv[0],argv[1]... 最后一个参数须用空指针NULL作结束。

函数返回值:

成功则不返回值, 失败返回-1, 失败原因存于errno中,可通过perror()打印

#include <unistd.h>/*** File: execl.c**/
#include <iostream>
using namespace std;
int main()
{
// 执行/bin目录下的ls, 第一参数为程序名ls, 第二个参数为"-al", 第三个参数为"/etc/passwd"
if(execl("/bin/ls", "ls", "-al", "/etc/passwd", (char *) 0) < 0)
{
cout<<"execl error"<<endl;
}
else
{
cout<<"success"<<endl;
}
return 0;
}


execl函数特点:

  当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。

  用另一个新程序替换了当前进程的正文、数据、堆和栈段。

  当前进程的正文都被替换了,那么execl后的语句,即便execl退出了,都不会被执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: