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

您所在的位置:网站首页 clientapp怎样结束进程 进程八种终止方式(很重要)

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

2023-06-15 13:48| 来源: 网络整理| 查看: 265

----根据网络视频整理 进程的终止 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)最后一个线程对其取消请求作出响应(也是被迫终止,故算异常终止).

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3