学习笔记(linux高级编程)7

2._exit 系统调用

void _exit(int status);

功能:

让进程退出,不刷新缓存区

参数:

status:进程退出状态

返回值:

缺省

回调函数

3.atexit

int atexit(void (*function)(void));

功能:

注册进程退出前执行的函数

参数:

function:函数指针

指向void返回值void参数的函数指针

返回值:

成功返回0

失败返回非0

当程序调用exit或者由main函数执行return时,所有用atexit

|---|----------------------------------------------------------------------------|
| |
| | |

注册的退出函数,将会由注册时顺序倒序被调用

3.进程空间的回收

exit(20);

wait/waitpid

pid_t wait(int *status);

功能:该函数可以阻塞等待任意子进程退出

并回收该进程的状态。

一般用于父进程回收子进程状态。

参数:status 进程退出时候的状态

如果不关心其退出状态一般用NULL表示

如果要回收进程退出状态,则用WEXITSTATUS回收。

返回值:成功 回收的子进程pid

失败 -1;

WIFEXITED(status) 是不是正常结束

WEXITSTATUS(status) 使用这个宏去拿子进程结束exit(20)中20这个返回值

WIFSIGNALED(status) 是不是收到了信号而终止的

WTERMSIG(status)如果是信号终止的,那么是几号信号。

pid_t waitpid(pid_t pid, int *status, int options);

< -1 回收指定进程组内的任意子进程

-1 回收任意子进程,组内外

0 回收和当前调用waitpid一个组的所有子进程,组内

> 0 回收指定ID的子进程

waitpid (-1,a,0) == wait(a);

status 子进程退出时候的状态,

如果不关注退出状态用NULL;

options 选项:

0 表示回收过程会阻塞等待

WNOHANG 表示非阻塞模式回收资源。

返回值:成功 返回接收资源的子进程pid

失败 -1

0,

EAGAIN

exec

execute

exec族

用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),

子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的

用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建

新进程,所以调用exec前后该进程的id并未改变。

其实有六种以exec开头的函数,统称exec函数:

ls -l -i list

execl("/bin/ls","-l","-i",NULL);

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

execlp("ls","-l","-i",NULL);

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

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

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

相关推荐
执笔论英雄12 小时前
【大模型学习cuda】入们第一个例子-向量和
学习
wdfk_prog12 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
ouliten12 小时前
cuda编程笔记(36)-- 应用Tensor Core加速矩阵乘法
笔记·cuda
盟接之桥12 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿13 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘13 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
孞㐑¥13 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
Fcy64814 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满14 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠14 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法