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()打印
execl函数特点:
当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。
用另一个新程序替换了当前进程的正文、数据、堆和栈段。
当前进程的正文都被替换了,那么execl后的语句,即便execl退出了,都不会被执行。
#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退出了,都不会被执行。
相关文章推荐
- 关于在linux平台或cygwin平台运行opencv出现Illege instruction(core dump)问题的缘由
- Linux 索引节点(inode)详解
- Linux中的历史命令
- linux下配置管理FTP服务器
- CentOS-6.3安装配置SVN
- Linux文件权限管理
- root根目录修改后的PS1恢复
- linux设备驱动归纳总结(三):4.ioctl的实现
- Linux战地日记——常用的文件操作命令
- linux设备驱动归纳总结(三):3面向对象思想和lseek
- Linux下的C编程实战
- linux设备驱动归纳总结(三): 2 open.close.read.write
- linux设备驱动归纳总结(三):1字符型设备之设备申请
- linux的grep命令
- linux设备驱动归纳总结(二):模块的相关基础概念
- linux设置固定IP
- Linux-Load blance
- linux软AP实现,hostapd+dhcpd+dnsmasq
- Linux 解压包命令大全
- linux/ubuntu svn 项目拷贝/迁移/合并