linux c-exec系列函数学习

函数原型

cpp 复制代码
  #include <unistd.h>    

   int execl(const char *pathname, const char *arg, ...
            /* (char  *) NULL */);
   int execlp(const char *file, const char *arg, ...
            /* (char  *) NULL */);
   int execle(const char *pathname, const char *arg, ...
            /*, (char *) NULL, char *const envp[] */);
   int execv(const char *pathname, char *const argv[]);
   int execvp(const char *file, char *const argv[]);
   int execvpe(const char *file, char *const argv[],
            char *const envp[]);

函数说明

这些函数都是以替换的方式,创建一个新的进程替代当前的进程。新的进程与原来的进程号相同,所有的用户空间(代码段、数据段)及部分的内核空间都可以视为是全新的。要注意与fork函数的区别。

  1. -l 可理解为list,函数参数类似列出的方式,但最后一个参数必须以NULL结尾
  2. -p
    1. 带p的等效为shell中直接使用指令,会从PATH的路径查找相关的可执行文件;
    2. 不带p的函数,则必须使用相对路径或者绝对路径
  3. -e
    1. 带e的函数,新进程的环境变量会被清空,来源是原进程传递过来的;
    2. 不带e的函数,则使用原进程的环境变量(理解:进程替代这一代概念,但又要注意用户空间是全新的)

可变参数 :可以参考va_start系列的(宏)函数,因此,无论是...,还是vector,还是环境变量的数组,最后一个元素必须是NULL!

返回值

The exec() functions return only if an error has occurred. The return value is -1, and errno is set to indicate the error.

exec系列函数只有 在执行错误的有返回值,且返回值为**-1**,相关的错误代码会被设置到errno中

相关推荐
jacGJ2 分钟前
记录学习--Windows常用命令
学习
张火火isgudi4 分钟前
VMware Debian 挂载 Windows 文件夹至 Debian 目录
linux·运维·windows·debian
自信150413057597 分钟前
数据结构初阶之单链表
c语言·数据结构
石榴花上8 分钟前
银河麒麟上的9090端口被占用问题处理
linux
代码游侠16 分钟前
学习笔记——sqlite3 数据库基础
linux·运维·网络·数据库·笔记·学习·sqlite
QT 小鲜肉16 分钟前
【Linux命令大全】001.文件管理之od命令(实操篇)
linux·运维·服务器·chrome·笔记
Ronin30518 分钟前
多路转接epoll
linux·网络·多路转接·高效io·epoll模型
珂玥c18 分钟前
virsh启用linux虚拟机+忘记密码的操作
linux·运维·服务器
Java后端的Ai之路25 分钟前
【神经网络基础】-一个完整的神经网络学习过程是怎样的?
人工智能·深度学习·神经网络·学习·激活函数
YJlio31 分钟前
磁盘工具学习笔记(13.7):分析可用空间碎片化程度——为大文件“预留整块地”
数据库·笔记·学习