news 2026/8/8 1:43:42

Linux进程的等待

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux进程的等待

一、进程等待的必要性

二、进程等待的方法和概念

三、阻塞与非阻塞等待

3.1进程的阻塞等待:

int main() { pid_t pid; pid = fork(); if(pid < 0){ printf("%s fork error\n",__FUNCTION__); return 1; } else if( pid == 0 ){ //child printf("child is run, pid is : %d\n",getpid()); sleep(5); exit(257); } else{ int status = 0; pid_t ret = waitpid(-1, &status, 0);//阻塞式等待,等待5S printf("this is test for wait\n"); if( WIFEXITED(status) && ret == pid ){ printf("wait child 5s success, child return code is :%d.\n",WEXITSTATUS(status)); }else{ printf("wait child failed, return.\n"); return 1; } } return 0; }

3.2进程的非阻塞等待:

#include <stdio.h> #include <stdlib.h> #include <sys/wait.h> #include <unistd.h> #include <vector> typedef void (*handler_t)(); // 函数指针类型 std::vector<handler_t> handlers; // 函数指针数组 void fun_one() { printf("这是⼀个临时任务1\n"); } void fun_two() { printf("这是⼀个临时任务2\n"); } void Load() { handlers.push_back(fun_one); handlers.push_back(fun_two); } void handler() { if (handlers.empty()) Load(); for (auto iter : handlers) iter(); } int main() { pid_t pid; pid = fork(); if (pid < 0) { printf("%s fork error\n", __FUNCTION__); return 1; } else if (pid == 0) { // child printf("child is run, pid is : %d\n", getpid()); sleep(5); exit(1); } else { int status = 0; pid_t ret = 0; do { ret = waitpid(-1, &status, WNOHANG); // ⾮阻塞式等待 if (ret == 0) { printf("child is running\n"); } handler(); } while (ret == 0); if (WIFEXITED(status) && ret == pid) { printf("wait child 5s success, child return code is :%d.\n", WEXITSTATUS(status)); } else { printf("wait child failed, return.\n"); return 1; } } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 2:52:21

代理IP和普通IP有什么区别?这篇文章帮你捋明白

在网络环境日益复杂的今天&#xff0c;代理IP成为企业与开发者频繁接触的关键词。但也有不少人常常疑惑&#xff1a;代理IP和普通IP究竟有什么不同&#xff1f;它们在使用场景、性能、安全性上又有何差异&#xff1f;本文将用通俗易懂的方式&#xff0c;从定义、功能、适用对象…

作者头像 李华
网站建设 2026/8/7 12:41:11

体系结构分类和指令系统

1.体系结构分类 1.1 按处理机的数量进行分类 按处理机的数量进行分类:单处理系统(一个处理单元和其他设备集成)、并行处理系统(两个以上的处理机互联)分布式处理系统(物理上远距离且松耦合的多计算机系统) 1.2 Flynn分类 分类有两个因素&#xff0c;即指令流和数据流&#…

作者头像 李华
网站建设 2026/8/7 1:32:10

基于AI数字人系统源码的低成本开发方案与实践经验

这两年&#xff0c;AI数字人从“概念展示”迅速走向商业落地。无论是企业官网数字客服、直播带货数字主播&#xff0c;还是教育、政务、金融等场景&#xff0c;AI数字人正在成为一种可复制、可规模化的新型生产力工具。但在实际交流中&#xff0c;我发现不少企业和开发者都会遇…

作者头像 李华
网站建设 2026/8/7 22:07:56

SQL 调优全解:从 20 秒到 200 ms 的 6 步实战笔记(附脚本)

一、阅读指引 1. 不会看执行计划 → 跳第 3 段 2. 索引失效/全表扫描 → 看第 4 段 3. 千万级分页卡顿 → 看第 5 段 4. 想直接抄代码 → 第 8 段有下载链接 二、测试环境 MySQL 8.0.34&#xff0c;16C64G&#xff0c;SSD&#xff1b;订单表 500w&#xff0c;明细表…

作者头像 李华
网站建设 2026/8/7 6:15:15

YOLO目标检测模型如何对接Apipost平台

前言 今天要给大家分享一个在工业巡检场景中非常实用的 AI 边缘计算部署实践。文中涉及的系统架构、接口设计和代码实现均为示例&#xff0c;主要用于说明整体思路和工程方法。我本人也是在实际项目中第一次系统性地接触边缘计算与算法接口化&#xff0c;很多经验都是在不断调…

作者头像 李华
网站建设 2026/8/7 23:42:40

简单的创建一个Spring Boot网页

刚接触 Spring Boot 时&#xff0c;总觉得做网页很复杂&#xff0c;其实只要选对依赖、写对核心代码&#xff0c;几分钟就能搞定一个基础网页&#xff01;今天分享极简版 Spring Boot 网页的创建流程。一、准备工作&#xff1a;创建 Spring Boot 项目1. 项目配置&#xff08;ID…

作者头像 李华