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

Linux系统编程——进程进阶:exec 族、system 与工作路径操作

一、exec族函数

  • 核心功能:执行本地任意可执行文件,是进程代码替换的核心工具。
  • 典型搭配:常和 fork() 配合。让子进程执行 exec,避免父进程自身代码被替换。
  • 内存逻辑
    • 执行 exec 后,原进程的代码段会被新程序完全覆盖;
    • 新程序运行结束,整个进程直接终止(原进程中 exec 之后的代码不会执行)。

执行 exec 之前:

执行 exec 之后:

函数区分:

  • l(list):参数以列表形式传
原型:int execl(const char *path, const char *arg, ...); 示例:execl("/bin/ls", "ls", "-a", NULL);

path:需要执行新程序的路径+文件名
arg:是新程序所需要的参数列表,结束标志NULL

  • v(vector):参数存在数组里传
原型:int execv(const char *path, char *const argv[]); 示例:char* arg[] = {"ls", "-l", NULL}; execv("/bin/ls", arg);

path:需要执行新程序的路径+文件名
argv:存放参数的数组 ,最后一个参数是NULL

  • p(PATH):自动从环境变量查程序
原型:int execlp(const char *file, const char *arg, ...); 示例:execlp("ls", "ls", "-l", NULL); // 无需写全路径

file:需要执行新程序的文件名(默认在环境变量PATH中查找)
arg:是新程序所需要的参数列表,结束标志NULL

二、system函数

  • 功能:一键执行 Shell 命令(如 ls/mkdir),适合简单系统操作。
  • 内部实现:底层是 fork()+exec 的封装,省去手动编写进程控制逻辑的步骤。
  • 限制:不能执行修改父进程状态的命令(如 cd,仅对 system 内部子进程生效)。
  • 用法:int ret = system("ls -l");(返回 -1 代表执行失败)。

三、工作路径工具

1.getcwd(获取当前路径)

  • 功能:把当前工作路径存入字符数组;
  • 用法:char buf[1024]; getcwd(buf, sizeof(buf));(失败返回NULL)。

2.chdir(切换工作路径)

  • 功能:修改进程的当前工作目录;
  • 用法:int ret = chdir("/home/user");(成功返回0,失败返回-1)。
http://www.jsqmd.com/news/94837/

相关文章:

  • 2025年北京优质deepseek优化服务商全景指南:助力企业抢占AI流量新赛道 - 品牌2025
  • C#+VisionMaster联合开发控件篇(五)_全局相机控件
  • ROS2核心概念之参数
  • 小程序商城工具挑选指南:功能、生态与商家需求解析
  • 2025年主流GEO服务商全景指南:助力企业抢占AI平台流量红利 - 品牌2025
  • 【第57套】一天两套,继续冲刺!
  • 异常机制
  • P3629 [APIO2010] 巡逻
  • AI 时代 GEO 营销先锋盘点:五大服务商助力 ToB 企业精准获客 - 品牌2025
  • SMB、FTP、MySQL... 配置不当,即是漏洞
  • 选择写论文软件哪个好?别让错误的工具,成为你学术路上“甜蜜的陷阱”
  • 32 低功耗模式(睡眠 停机 待机 )
  • 学术 “智造局”—— 虎贲等考 AI,承包你论文从选题到定稿的全周期智能服务
  • 告别选题迷茫、文献繁杂、写作卡顿!虎贲等考 AI,学术研究全流程智能引擎,做你的私人学术加速器
  • 深入解析:LeetCode 51 - N皇后问题 详解笔记
  • 豆包 AI 手机登录微信被「踢下线」,原因为何?端侧 AI 与头部应用的生态兼容上存在哪些挑战?
  • leetcode 754. Reach a Number 到达终点数字-耗时100%
  • Java毕设选题推荐:基于springboot高校奖助学金系统设计与实现基于springboot高校学生奖学金评定系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 实用指南:UE5笔记:OnComponentBeginOverlap
  • 豆包手机助手技术预览版发布,AI直接嵌入操作系统底层有何意义?会对行业产生什么影响?
  • 校园招聘会组织不再难,统筹安排让就业季更顺畅
  • 【毕业设计】基于springboot人才公寓管理系统基于springboot公寓管理系统(源码+文档+远程调试,全bao定制等)
  • JSON 与 MongoDB:直存对象的便利与隐性代价
  • 【Agent】MemOS 源码笔记---(5)---记忆分类
  • 靠谱的 AI 智能体获客落地指导,2025 年 12 月除了麟哥还有谁?
  • 销售助手-生产模型反馈闭环
  • 【原创代码改进】基于IVY(常青藤优化算法)-BiTCN(双向时域卷积网络)-BiGRU(双向门控循环单元)的多变量时间序列回归
  • NO17数据结构选择题考点|图
  • 2026年最强翻译工具——不是常规的机翻!
  • 智慧校园招投标流程中的时间管理要点:如何把握关键节点