2026世界杯_2004年世界杯 - 1606811.com

首页 > 击剑世界杯 > 进程八种终止方式(很重要)

进程八种终止方式(很重要)

----根据网络视频整理

进程的终止

0、前言

进程的返回值是给其父进程看的,main()函数的返回值,return 0; 这个0就是给父进程看的。我们在shell中启动该进程,则shell就是该进程的父进程。

在shell中查看上一进程的返回值,命令:

echo $?

倘若没有返回值,此时执行echo $? ,如上打印的是7; -----》是printf的返回值:7个字符。

1、五种正常终止方式

1)从main函数中返回------>return 0;

main作为当前进程的入口,也是当前进程的出口。

2)调用exit------>直接结束进程

man 3 exit------>exit 是库函数

返回值:是status&0377

0377 八进制数;

011 111 111----》将status的低八位数返回。

因为int是32位的有符号数。所以,返回的是有符号的char类型。即: -128至127

atexit():钩子函数

3)调用_exit 或 _Exit

man 2 _exit ----》是系统调用

如上图:调用exit会进程虚拟地址空间(虚框内)进行,资源的释放,IO的清理,再依赖_exit到内核。

而_exit,则直接调到虚框外,到内核,不执行钩子函数,IO清理。。。。。。

如上,f的值,居然出现了我们人为定义的0,1,2外的情况,

很有可能是?处的代码发生写越界,将f的空间覆盖写了。此时我们不能调用exit,这样会调用钩子函数,刷新IO,造成故障扩大。

此时,要使用_exit(),或者调用abort(),产生信号杀死进程。

4)最后一个线程从其启动例程(线程本身)中返回。

5)最后一个线程调用pthread_exit

2、三种异常终止方式

1)调用abort函数-----》发送signalabort信号给当前进程,杀死当前进程,并获得calmdown文件

2)接到一个信号并终止,例如使用ctrl+C终止进程。

3)最后一个线程对其取消请求作出响应(也是被迫终止,故算异常终止).




9、梦幻西游BB加一点魔力 加多少灵力
伊朗VS美国前瞻:谁赢球谁出线,亚洲第1目标进16强,CCTV5直播