Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux进程终止

Linux进程如何终止

作者:风吹雨淋

这篇文章主要介绍了Linux进程如何终止问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

return和exit的数据就是进程的退出码

一个程序运行起来是完成一个任务,只能通过退出码来表示当前进程任务处理的结果

进程常见退出方法

return和exit都是给进程一个返回值

三种退出场景

僵尸进程是退出,但是资源没有完全被释放,是为了保存退出原因(保存在PCB中)

exit和_exit函数的区别

exit是库函数,谁调用谁退出

void exit (int ststus)

status:进程退出的状态码_exit是系统调用函数,谁调用谁退出

void _exit (int status)

status:进程退出的状态码

exit函数的内部封装了_exit函数,exit函数在退出进程的时候比_exit函数多做两件事

区别1 冲刷缓冲区

缓冲区:其实就是内存中临时存储数据的一块空间,这样做的目的是为了减少与物理内存交互的次数

现象:一秒后hello才显示到屏幕上

实质:打印hello并不是直接在屏幕上输出,是先缓存在内存中,然后再在缓冲区中将其内容冲刷出来;

加不加 \n 有一个本质区别:它是否刷新了缓冲区,

也就是说将hello放在某个内存中,不加 \n 就没有主动刷新这个缓冲区到屏幕上去,在当前程序结束后才放入缓冲区刷新至屏幕

再次深入理解缓冲区:

库函数的代码实现是在C运行时库中,系统调用函数的代码实现是在内核当中,上面所说的缓冲区是在C运行时库中;

例如:

exit函数是靠 _exit函数实现的

现象:

原因:

结论:exit会比_exit多做一件事,那就是刷新缓冲区

区别2 执行用户自定义的清理函数

先了解另一个知识点:

回调函数:

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

参数:是函数指针类型,用来接收一个函数的地址,接收函数的返回值是void,参数也是void

现象:先打印2,再打印1

原因:

回调函数功能:

atexit函数是清理函数,本质是回调函数

刷新缓存区的办法

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文