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上)。

相关推荐
_wyt00127 分钟前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp
大树882 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 小时前
Linux 11 动态监控指令top
linux
Inhand陈工4 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
玖玥拾4 小时前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
酣大智4 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩4 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言