当前位置: 首页 > news >正文

Linux 进程:exec函数簇

目录

  • (1)execl
  • (2)execlp
  • (3)execle
  • (4)execv
  • (5)execvp
  • (6)execve

  在进程控制中提到,子进程的最大价值在于程序替换,而exec函数簇就是用来进行程序替换的函数,本文会简要的讲解如何去使用exec函数簇。

  extern char **environ:这是全局变量,里面存储着环境变量。

  • int execl(const char *path, const char *arg, …);
  • int execlp(const char *file, const char *arg, …);
  • int execle(const char *path, const char *arg,…, char * const envp[]);
  • int execv(const char *path, char *const argv[]);
  • int execvp(const char *file, char *const argv[]);
  • int execve(const char *file, char *const argv[],char *const envp[]); 系统调用接口

(1)execl

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

  • const char *path:新程序的名称(要带程序的路径)
  • const char *arg:函数运行参数,不定参,可以有多个,但最后要以NULL结尾。

 返回值:失败返回-1

  示例:execl(“./main”,“./main”,“a”,“b”,NULL)

  如图:我们运行的程序名称是./main,但是在运行时还给予了参数 a、b。程序名本身也是一个参数。

运行参数

(2)execlp

int execlp( const char *file, const char *arg, ...)

  • const char *file:新程序名(不带路径,因为系统会去path环境变量指定的路径下面去找对应的程序,常用于指令程序替换)
  • const char *arg: 运行时参数,不定参,可以有多个,但最后要以NULL结尾

 返回值:失败返回-1

  示例:execlp(“ls”,“ls”,“-l”,NULL)

(3)execle

int execle( const char *path, const char *arg , ..., char * const envp[]);

  • const char *path:新程序名称(要带路径)
  • const char *arg :参数,不定参,可以有多个,但最后要以NULL结尾
  • char * const envp[]:envp里面是环境变量

 返回值:失败返回-1

  示例:execle(“./main”,“./main”,“-a”,NULL,envp)

(4)execv

int execv( const char *path, char *const argv[]);

  • const char *path:新程序名称(要带路径)
  • char *const argv[]:参数,参数不是一个一个给,而是存在字符数组中一次性给。

 返回值:失败返回-1

  示例:char * argv[]={“./main”,“a”,“b”,NULL}
     execv(“./main”,argv)

(5)execvp

int execvp( const char *file, char *const argv[]);

  • const char *file:新程序名(不带路径,在path环境变量指定的路径下面去找程序,常用于指令程序替换)
  • char *const argv[] :运行时参数,参数用数组传递

 返回值:失败返回-1

  示例:char * argv[]={“ls”,“-a”,“-l”,NULL}
     execvp(“ls”,argv)

(6)execve

int execve(const char *file, char *const argv[],char *const envp[]);

这是系统调用接口,其他五个都是封装的库函数。

  • const char *file:新程序名称(要带路径)
  • char *const argv[]:运行时,参数不是一个一个给,而是存在字符数组中一次性给。
  • char *const envp[]:envp里面是环境变量

 返回值:失败返回-1

  示例:char * argv[]={“./main”,“a”,“b”,NULL}
     execve(“./main”,argv,envp)

http://www.lryc.cn/news/31361.html

相关文章:

  • 极简RSS订阅器Miniflux
  • 网络通信快速入门
  • 【阅读文档】Vue.js 2.0 之教程文档
  • Docker【基本使用】
  • 算法leetcode|39. 组合总和(rust重拳出击)
  • JavaSE学习笔记总结day18
  • HybridFusion: LiDAR和视觉交叉源点云融合
  • 走进JVM
  • C语言-基础了解-15-C函数指针与回调函数
  • react和vue在响应式上的不同理解
  • 多线程二 多线程了解与使用
  • 嵌入式 Linux 的僵尸进程是什么?
  • 【刷题笔记】笔记一
  • 浏览器主页被hao123劫持的解决方案
  • 华为OD机试题 - 热点网络统计(JavaScript)| 含代码编写思路
  • IT项目经理的自我修养手册
  • 2023年软考中级电子商务设计师考什么?
  • 现在的00后太强了,几个问题差点给我问懵了
  • $3 : 水​​​​​项目实战 - 水果库存系统
  • 毕业设计 基于STM32单片机无线ZIGBEE智能大棚土壤湿度光照检测
  • 华为OD机试真题Java实现【相对开音节】真题+解题思路+代码(20222023)
  • 【C++】30h速成C++从入门到精通(STL容器listvector)
  • 操作系统---存储管理
  • 华为OD机试题 - 好朋友(JavaScript)| 含思路
  • socket本地多进程通信基本使用方法和示例
  • Python 算法交易实验51 Step2 Signals 信号生成
  • app上架专用软著认证电子版权在主流应用商店的使用说明2023年最新版
  • [Mybatis2]Mapper代理开发
  • 第十一届蓝桥杯大赛青少组国赛Python真题2
  • 创建springboot项目文件报红