news 2026/4/16 4:53:03

自学嵌入式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/4/15 3:45:50

智能制造新生态:从技术整合到效率跃迁的实战方案

在现代制造业中&#xff0c;智能制造解决方案的全面升级尤为关键&#xff0c;其核心在于整合多种技术以提高整体效率。首先&#xff0c;智慧物流系统集成能够显著优化物流环节&#xff0c;实现物料的即时配送。其次&#xff0c;半导体生产线自动化的实施为生产流程引入了无缝对…

作者头像 李华
网站建设 2026/4/12 21:17:56

Comsol 模拟锌离子沉积电场强度与电势分布

comsol模拟仿真 锌离子沉积电场强度分布&#xff0c;电势分布。最近在研究电化学相关的课题&#xff0c;其中锌离子沉积过程中的电场强度分布和电势分布是很关键的点。今天就来分享下如何用 Comsol 对这一过程进行模拟仿真。 Comsol 简介 Comsol Multiphysics 是一款功能强大的…

作者头像 李华
网站建设 2026/4/16 10:40:53

R与Python模型融合结果对比(权威验证框架曝光)

第一章&#xff1a;R与Python模型融合结果对比&#xff08;权威验证框架曝光&#xff09;在机器学习模型开发中&#xff0c;R与Python作为两大主流分析语言&#xff0c;其模型融合能力的差异长期存在争议。本章引入权威交叉验证框架&#xff0c;基于相同数据集、特征工程流程与…

作者头像 李华
网站建设 2026/4/15 23:08:21

传送带机械手搬运工件监控系统博途V16程序改造之旅(二)

传送带机械手搬运工件监控系统博途V16程序改2&#xff0c;带程序视频嘿&#xff0c;各位工控小伙伴们&#xff01;上次咱们聊到了传送带机械手搬运工件监控系统博途V16程序改造的一些基础思路&#xff0c;今天咱接着深挖&#xff0c;看看还有哪些好玩的地方。先回顾一下&#x…

作者头像 李华