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

相关推荐
蜡台1 小时前
Python包管理工具pip完全指南-----2
linux·windows·python
智者知已应修善业1 小时前
【51单片机中的打飞机设计】2023-8-25
c++·经验分享·笔记·算法·51单片机
^—app5668661 小时前
游戏运存小启动不起来临时解决方法
运维·服务器
Ujimatsu1 小时前
虚拟机安装Debian 13.x及其常用软件(2026.4)
linux·运维·ubuntu
千百元1 小时前
zookeeper启不来了
linux·zookeeper·debian
志栋智能2 小时前
超自动化安全:构建智能安全运营的核心引擎
大数据·运维·服务器·数据库·安全·自动化·产品运营
AnalogElectronic3 小时前
linux 测试网络和端口是否连通的命令详解
linux·网络·php
智者知已应修善业3 小时前
【51单片机按键调节占空比3位数码管显示】2023-8-24
c++·经验分享·笔记·算法·51单片机
Edward111111114 小时前
4月28日防火墙问题
linux·运维·服务器
想学后端的前端工程师4 小时前
【补充内外网突然不通的情况】
运维·服务器