进程八种终止方式(很重要) |
您所在的位置:网站首页 › 什么快捷键可以结束进程 › 进程八种终止方式(很重要) |
----根据网络视频整理
进程的终止
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 或 _Exitman 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 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |