Linux/C++多进程

给你最简洁、能直接用、新手一看就懂的 Linux C++ 多进程核心内容,不废话。


1. 核心 API(就这 3 个最常用)

  1. fork():创建子进程
  2. getpid():获取当前进程 ID
  3. wait() / waitpid():等待子进程结束,防止僵尸进程

2. 极简可运行代码

cpp

运行

复制代码
#include <iostream>
#include <unistd.h>   // fork, getpid
#include <sys/wait.h> // wait
using namespace std;

int main() {
    // 创建子进程
    pid_t pid = fork();

    if (pid < 0) {
        cout << "创建失败" << endl;
        return -1;
    }

    // 子进程
    if (pid == 0) {
        cout << "我是子进程 PID: " << getpid() << endl;
        return 0;
    }
    // 父进程
    else {
        cout << "我是父进程 PID: " << getpid() << endl;
        wait(NULL); // 等子进程结束
        cout << "子进程已退出" << endl;
    }
    return 0;
}

编译运行

bash

运行

复制代码
g++ test.cpp -o test
./test

3. 最关键知识点

  • fork 调用一次,返回两次
    • 返回 0 → 子进程
    • 返回 >0 → 父进程
  • 父子进程内存独立,互不干扰
  • 父进程必须 wait 子进程,否则会产生僵尸进程
  • 多进程适合:CPU 密集任务、独立子任务、稳定性要求高的场景

4. 3 句话总结

  1. fork () 造子进程
  2. 按返回值区分父子
  3. wait () 收尸防僵尸
相关推荐
Z21-X9 分钟前
云原生运维实战笔记:华为云存储类服务全景解析——EVS、OBS、SFS与CBR深度实践
运维·笔记·学习·云原生·华为云
A7bert77714 分钟前
【MobileSAM部署至RK3588】环境适配→转换RKNN→开发板部署
c++·人工智能·深度学习·目标检测·ubuntu
Decay__26 分钟前
17_MySQL 监控体系构建 —— mysqld_exporter + Prometheus + Grafana 全栈实战
运维·数据库·sql·mysql·架构
青少儿编程课堂30 分钟前
蓝桥杯·全国青少年信息素养大赛·电子学会C/C++考级:分层图最短路解析
c++·python·算法·bfs·信息学竞赛
ITKEY_35 分钟前
emacs 文件管理Dired, the Directory Editor
linux·编辑器·emacs
天远数科36 分钟前
零信任架构实战:基于天远全能家政风险报告构建自动化即时到家保洁与短工抢单安全核验网关
运维·人工智能·架构·自动化
源图客39 分钟前
解决CentOS操作系统网络异常问题
linux·运维·centos
分布式存储与RustFS1 小时前
K8s 集群备份落到自建对象存储:Velero 接 RustFS 配置指南
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
镜子AI10 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
tianyuanwo10 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox