news 2026/7/10 5:41:46

自学嵌入式day31,waitpid,system 函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自学嵌入式day31,waitpid,system 函数

waitpid 和 wait 函数

waitpid(-1, status, 0)等同于wait(status)
waitpid函数原型为pid_t waitpid(pid_t pid, int *status, int options)

参数说明:

  • pid取值决定回收的子进程范围:

    • <-1:回收指定进程组内的任意子进程。
    • -1:回收任意子进程(组内外)。
    • 0:回收与调用waitpid同进程组的所有子进程。
    • >0:回收指定 PID 的子进程。
  • status:存储子进程退出状态。若无需状态可设为NULL

  • options

    • 0:阻塞等待回收。
    • WNOHANG:非阻塞模式,需通过返回值判断是否回收成功(通常搭配循环使用)。

返回值:

  • 成功:返回被回收子进程的 PID。
  • 失败:返回-10(非阻塞模式下无子进程退出)。
  • 错误码:如EAGAIN表示资源暂时不可用。

exec 函数族

用于替换当前进程的代码和数据为新程序,不创建新进程(PID 不变)。

函数分类:
  1. execl

    int execl(const char *path, const char *arg, ...);
    • path:新程序的完整路径(如"/bin/ls")。
    • arg:参数列表,以NULL结尾(如"ls", "-al", "/bin", NULL)。
  2. execlp

    int execlp(const char *file, const char *arg, ...);
    • file:通过环境变量PATH查找程序文件名(如"firefox")。
  3. execv

    int execv(const char *path, char *const argv[]);
    • argv:参数数组(如{"ls", "-al", "/bin", NULL})。
  4. execvp

    int execvp(const char *file, char *const argv[]);
    • file:通过PATH查找文件名。

注意:

  • 调用成功后,原进程代码被替换,后续代码(如printf)不会执行。
  • 若需调用自身程序,第一个参数需为完整路径。

system 函数

执行 Shell 命令(如文件操作或信息输出):

int system(const char *command);
  • command:Shell 命令字符串。
  • 返回值:
    • -1:失败(如fork出错)。
    • 其他:命令的退出状态。

实现原理:内部通过fork+exec完成。


工作目录相关函数

  1. 获取当前路径

    char *getcwd(char *buf, size_t size);
    • buf:存储路径的缓冲区。
    • size:缓冲区大小。
    • 返回值:成功返回buf,失败返回NULL
  2. 切换工作目录

    int chdir(const char *path);
    • path:目标路径。
    • 返回值:0成功,-1失败。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 2:40:16

如何利用微信个人号API接口进行二次开发?

微信作为国民级应用&#xff0c;不仅是社交的中心&#xff0c;更是企业连接客户、进行私域运营的核心阵地。然而&#xff0c;微信生态的封闭性往往让开发者望而却步。现在&#xff0c;GeWe 开放平台来了&#xff01; 它将成为你连接微信世界的桥梁&#xff0c;提供强大而便捷的…

作者头像 李华
网站建设 2026/7/8 21:53:08

Symfony 8服务注册中心性能优化指南(提升响应速度300%)

第一章&#xff1a;Symfony 8微服务注册中心概述在现代分布式系统架构中&#xff0c;微服务的动态性和可扩展性要求服务之间能够高效发现与通信。Symfony 8 引入了对微服务注册中心的原生支持&#xff0c;通过集成轻量级服务注册机制&#xff0c;提升多服务协同部署的灵活性与稳…

作者头像 李华
网站建设 2026/7/8 14:43:18

3、CentOS 7 入门:Bash shell 与文件系统导航

CentOS 7 入门:Bash shell 与文件系统导航 1. 认识 Bash shell GNU Bash 主要是一个解释用户在提示符下输入命令的程序。用户输入的每个命令通常由三部分组成: - 命令 - 选项(以 - 或 – 开头) - 参数 每个输入到 shell 中的单词之间用空格分隔。命令是系统上安装的各…

作者头像 李华
网站建设 2026/7/9 6:46:23

2025年低成本提升AI能力:CAIE认证的高性价比之选

2025 年&#xff0c;AI 技能已成为职场的通用竞争力&#xff0c;但不少学习者因学习成本高、资质认证贵而望而却步。此时&#xff0c;低成本且高含金量的 AI 认证&#xff0c;就成了打通技能提升与职场进阶的关键桥梁。 一、核心技能&#xff1a;人工智能&#xff0c;低成本进阶…

作者头像 李华
网站建设 2026/7/9 9:05:10

2025应届生AI证书避坑指南:CAIE认证成优选

2025 年应届生求职赛道中&#xff0c;AI 技能已成为跨行业岗位的 通用加分项&#xff0c;但各类 AI 证书鱼龙混杂&#xff0c;不少应届生因盲目报考陷入证书含金量低、学习成本高的坑。选对高适配、高性价比的 AI 证书&#xff0c;才能真正为求职赋能。 一、核心技能&#xff1…

作者头像 李华
网站建设 2026/7/8 13:54:29

如何利用PHP 8.6的JIT指令优化实现毫秒级响应?

第一章&#xff1a;PHP 8.6 JIT优化概述PHP 8.6 即将引入的JIT&#xff08;Just-In-Time&#xff09;编译器优化&#xff0c;标志着PHP在执行性能上的又一次重大飞跃。通过将热点代码动态编译为原生机器码&#xff0c;JIT显著减少了运行时解释开销&#xff0c;尤其在高计算密度…

作者头像 李华