linux 以及 c++编程里对于进程,线程的操作

Linux 进程操作(系统调用)

  • 创建 :fork() -- 复制当前进程,返回两次(父进程得子进程PID,子进程得0)。常配合exec族函数(如execlp)执行新程序。

  • 终止 :exit(int status)(标准C库,刷新缓冲区)或 _exit(int status)(直接内核调用)。进程退出码由父进程收集。

  • 等待 :wait(int *status) 或 waitpid(pid_t pid, int *status, int options) -- 父进程阻塞回收子进程资源,防止僵尸进程。

Linux 线程操作(POSIX pthread)

  • 创建 :pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg) -- 创建新线程执行指定函数。

  • 终止 :线程函数return;或调用pthread_exit(void *retval);或被pthread_cancel(pthread_t thread)取消。

  • 等待 :pthread_join(pthread_t thread, void **retval) -- 阻塞等待指定线程结束,回收资源并获取返回值。

  • 分离 :pthread_detach(pthread_t thread) -- 使线程结束后自动释放资源,无需join。

C++ 标准线程库(C++11 起)

  • 创建 :std::thread t(func, args...) -- 构造即启动线程。

  • 等待 :t.join() -- 阻塞等待线程完成。

  • 分离 :t.detach() -- 让线程在后台运行,不再可join。

  • 注意 :必须在线程对象销毁前调用join()或detach(),否则程序终止。使用std::jthread(C++20)可自动join。

关键区别与同步

  • 进程独立地址空间,线程共享内存(需同步:互斥锁std::mutex、条件变量等)。

  • 资源回收:进程必须wait,线程要么join要么detach。

  • 现代C++优先使用std::thread,底层仍是pthread(Linux上)。

相关推荐
YLCHUP27 分钟前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
xiaoye-duck37 分钟前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
科研邪修法41 分钟前
培训PDF保护配置:把需求转换成可验收权限
linux·服务器·网络
思麟呀1 小时前
背包DP(01背包+完全背包)
c++·算法
Felven1 小时前
中科驭数100G网卡RDMA性能测试
linux·rdma·中科驭数·100g网卡
分布式存储与RustFS2 小时前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
旖旎夜光2 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
ShineWinsu3 小时前
对于Qt:QTabWidget常见属性的解析
开发语言·数据库·c++·qt·浏览器·qtabwidget·标签页
雪落漂泊4 小时前
Liunux进程(七):程序控制篇(中)
linux·运维·windows
分布式存储与RustFS4 小时前
工作流脚本和依赖 JAR 散在各节点本地盘:用 DolphinScheduler 资源中心接到 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准