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

网站备案查询 java今天军事新闻最新消息

网站备案查询 java,今天军事新闻最新消息,手机排行榜第一名,商务网站设计方案📜 函数原型 pid_t waitpid(pid_t pid, int *status, int options);🔑 参数详解 pid: 要等待的子进程 PID,可以指定特定的进程或进程组。 > 0: 等待特定 PID 的子进程。 -1: 等待任意子进程(行为类似 wait())。 …

📜 函数原型

pid_t waitpid(pid_t pid, int *status, int options);

🔑 参数详解

  1. pid: 要等待的子进程 PID,可以指定特定的进程或进程组。

    • > 0: 等待特定 PID 的子进程。

    • -1: 等待任意子进程(行为类似 wait())。

    • 0: 等待与调用进程同一进程组的任意子进程。

    • < -1: 等待特定进程组的子进程。

  2. status: 子进程状态的输出,可以通过宏(如 WIFEXITED, WEXITSTATUS)来解析。

  3. options: 控制等待行为的选项(可组合)。

    • WNOHANG: 非阻塞模式,若没有子进程退出,立即返回 0

    • WUNTRACED: 报告已停止的子进程状态。

    • WCONTINUED(Linux 特有):报告已恢复的子进程状态。


💡 返回值

  • 成功: 返回子进程的 PID。

  • 失败: 返回 -1,并设置 errno(常见错误:ECHILD 无子进程,EINTR 被信号中断)。

  • 非阻塞模式(WNOHANG: 若无子进程退出,返回 0


🧐 状态解析宏

通过 status 参数获取子进程的退出原因:

  1. 正常退出:

    • WIFEXITED(status):若为真,表示子进程正常退出。

    • WEXITSTATUS(status):获取子进程的退出码。

  2. 被信号终止:

    • WIFSIGNALED(status):若为真,表示子进程被信号终止。

    • WTERMSIG(status):获取导致终止的信号编号。

  3. 被信号暂停(需 WUNTRACED 选项):

    • WIFSTOPPED(status):若为真,表示子进程被暂停。

    • WSTOPSIG(status):获取导致暂停的信号编号。

  4. 恢复执行(需 WCONTINUED 选项):

    • WIFCONTINUED(status):若为真,表示子进程从暂停状态恢复。


⚡ 典型用法

1. 阻塞等待特定子进程
pid_t child_pid = fork();
if (child_pid == 0) {// 子进程代码exit(42);  // 子进程正常退出
} else {int status;pid_t ret = waitpid(child_pid, &status, 0);  // 等待特定子进程if (ret == child_pid) {if (WIFEXITED(status)) {printf("Child exited with code %d\n", WEXITSTATUS(status)); // 输出 42}}
}
2. 非阻塞轮询子进程状态
int status;
pid_t ret;
while ((ret = waitpid(-1, &status, WNOHANG)) > 0) {  // 非阻塞模式// 处理已退出的子进程
}
if (ret == 0) {// 没有子进程退出,继续执行其他任务 💼
} else if (ret == -1) {// 错误处理 🛑
}
3. 处理被信号终止的子进程
if (WIFSIGNALED(status)) {printf("Child killed by signal %d 💥\n", WTERMSIG(status));
}

📝 注意事项

  1. 僵尸进程: 如果父进程没有调用 waitpid(),子进程将变成僵尸进程(Zombie),占用系统资源 ⚠️。

  2. 信号处理: 在 SIGCHLD 信号处理函数中调用 waitpid() 可以及时回收子进程 🛠️。

  3. 多线程安全: 在多线程环境中使用时需谨慎,以避免竞争条件 ⚔️。

  4. 错误处理: 在出现错误时需要检查 errno,区分不同的错误类型 ❗。


🤔 wait() vs waitpid()

特性wait()waitpid()
目标子进程任意子进程可指定 PID 或进程组
阻塞行为总是阻塞支持非阻塞(WNOHANG 选项)
扩展状态信息不支持支持(如 WUNTRACED

🌐 总结

通过 waitpid(),开发者可以精确地控制子进程的等待行为,适用于需要管理多个子进程或者非阻塞式进程监控的场景。掌握它就像拥有了监控多任务的神奇能力 🧙‍♂️。

http://www.dtcms.com/wzjs/187363.html

相关文章:

  • php p2p网站开发整站快速排名优化
  • 怎么知道网站程序是什么做的今日国际新闻头条新闻
  • 芜湖网站建设推广公司长沙seo
  • 宁波网站建设慕枫科技百度联系方式
  • 网店详情页设计白杨seo
  • 陕西专业网站建设价格icp备案查询
  • 对比网页设计网站免费发帖平台
  • inititle 网站建设软件推广怎么赚钱
  • 免费拓客软件排行榜seozhun
  • 最新中国b2b网站排名网络营销的主要传播渠道
  • 搭建一个网站多少钱seo怎么读
  • 云主机iss怎么做网站app下载注册推广平台
  • APP客户端网站建设推广项目的平台
  • 郴州是几线城市搜索引擎优化的概念是什么
  • 网站建设学习网站网络广告策划流程有哪些?
  • 动态网站难不难做电子商务网站建设多少钱
  • 乐清网站开发公司关键词优化哪家好
  • 乐清站在哪跨境电商平台有哪些?
  • 做网站的公司广州廊坊关键词优化排名
  • 四川成都营销型网站网络服务费计入什么科目
  • 网站建设公司价格表广告推广免费发布
  • 网站怎么做导航域名交易平台
  • 合肥做网站建设公司在百度上怎么卖自己的产品
  • 杭州未来科技网站建设百度账号怎么改用户名
  • php做的购物网站代码2020年度关键词有哪些
  • wordpress文件共享seo优化就业前景
  • 顺企网哈尔滨网站建设员工培训课程
  • 哈尔滨市做淘宝的网站河南专业网站建设
  • 品牌网站设计图片怎么做推广网站
  • 政法网 网站建设一个产品的网络营销方案