进程与线程之线程

首先exec函数族是进程中的常用函数,可以利用另外的进程空间执行不同的程序,在之前的fork创建子进程中会完全复制代码数据段等,而exec函数族则可以实现子进程实现不同的代码

int execl(const char *path, const char *arg, ...

/* (char *) NULL */);

int execlp(const char *file, const char *arg, ...

/* (char *) NULL */);

int execle(const char *path, const char *arg, ...

/*, (char *) NULL, char * const envp[] */);

int execv(const char *path, char *const argv[]);

int execvp(const char *file, char *const argv[]);

int execvpe(const char *file, char *const argv[],

char *const envp[]);

功能:

利用进程空间执行另外一份代码

l:参数以列表形式传递

v:参数以指针数组形式传递

e:更新环境变量

p:在系统指定目录下查找文件
getenv

char *getenv(const char *name);

功能:

获得环境变量名对应的值

setenv

int setenv(const char *name, const char *value, int overwrite);

功能:

设置环境变量的值

参数:

name:环境变量名

value:环境变量的值

overwrite:非0 覆盖

0 不覆盖

返回值:

成功返回0

失败返回-1
1.基本概念:

线程:线程是一个轻量级的进程,位于进程空间内部,一个进程中可以创建多个线程

2.线程创建:

线程独占栈空间,文本段、数据段和堆区与进程共享

3.线程调度:

与进程调度是一样的

宏观并行,微观串行

4.线程消亡:

与进程消亡是一样的
5.进程和线程的区别:

进程是操作系统资源分配的最小单元

线程是CPU任务调度的最小单元

6.多进程和多线程的优缺点:

效率:多线程 > 多进程

多线程只需在同一进程空间内切换

多进程需要在不同的空间中切换

通信:多线程 > 有进程

线程共享全局变量,可以通过全局变量实现数据通信

进程空间是独立的,没有共享空间,通信实现比较复杂

通信实现:多进程 > 多线程

线程共享空间操作时会引发资源竞争

进程没有共享空间,不存在资源竞争的问题

安全:多进程 > 多线程

一个进程异常不会影响其余进程空间

一个线程异常结束会导致进程异常结束,进程异常结束,该进程内所有线程任务均无法向下执行
7.线程相关的函数接口:

创建: fork pthread_create

退出: exit pthread_exit

回收: wait pthread_join

相关推荐
崔庆才丨静觅2 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
2601_949146533 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
passerby60613 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了3 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅3 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
崔庆才丨静觅3 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
盟接之桥4 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
崔庆才丨静觅4 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment4 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端