Linux中正常终止进程的3种方式和异常终止进程的2种方式

在前两章中我们了解了创建进程,这一章我们来了解下,在linux下怎么结束进程。在linux中,有3种正常结束进程的方法和2种异常终止的方法:1、 正常结束:a、

大家好,感谢邀请,今天来为大家分享一下Linux中正常终止进程的3种方式和异常终止进程的2种方式的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

1、正常结束:

一个。在main函数中调用return。这相当于调用exit。

b.调用退出函数。根据ANSI C中该函数的定义,当调用时,所有注册的退出句柄将被执行,并且所有标准I/O流将被关闭。但文件描述符和多进程(父进程和子进程)、作业等,因此对于Linux系统来说并不完美。

c.调用_exit 函数。 exit 由_exit 调用,它关闭一些Linux 特定的退出句柄。

2、异常终止

一个。呼叫中止。这实际上是第二种情况的特例,因为它会生成SIGABRT 信号。

b.该进程接收特定信号。这个信号可以由进程本身产生(例如abort函数),也可以来自其他进程或内核。例如,当进程尝试访问越界内存地址或除以零时,内核将生成一个信号来中断该进程。

无论你如何结束进程,最终都会执行内核中的同一段代码。这段代码关闭进程打开的所有文件描述符、私有访问占用的内存等。

接下来我们来了解一下exit和_exit函数

这两个函数位于不同的头文件中:exit 在stdlib.h 中,_exit 在unistd.h 中

Linux中正常终止进程的3种方式和异常终止进程的2种方式

它们的具体调用形式如下:

无效退出(int __status)

无效_退出(int __status)

参数status为退出状态。

我们看一下下面两段代码:

图1

图2

图3

图4

图1 中的代码缺少\n,这导致语句未打印测试结束。这是因为如果printf不加\n,则不会立即打印信息,_exit也不会强制输出缓冲区中的数据。即printf/fprintf等调用生成的尚未写入设备且仍在缓冲区中的数据将被丢弃。 _exit 期间打印信息会丢失,但退出时不会丢失。如果有\n则直接打印。这时候exit/_exit就没有什么区别了。

Linux中正常终止进程的3种方式和异常终止进程的2种方式

父子进程的终止顺序不同会产生不同的结果。

1、父进程先于子进程终止:

这种情况就是我们所说的孤儿进程。当父进程先退出时,系统会让init进程接管子进程。

2、子进程先于父进程终止,且父进程没有调用wait函数。

在这种情况下,子进程会进入僵尸状态,并一直保持这种状态,直到系统重新启动。当子进程处于僵尸状态时,内核只为父进程保存一些必要的进程信息。这时子进程总是占用资源,同时也减少了系统可以创建的最大进程数。

什么是僵尸状态?

已经终止但其父进程尚未处理(获取已终止子进程的信息并释放其仍占用的资源)的进程称为僵尸进程。

3、子进程先于父进程终止,父进程调用wait函数。

用户评论

Linux中正常终止进程的3种方式和异常终止进程的2种方式
命运不堪浮华

哇塞!终于明白了怎么结束Linux进程了!感谢博主详细解释几种方法,尤其是那些异常终止的方法,太实用啦!

    有13位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
坏小子不坏

这篇文章让我对Linux进程管理有了更深入的了解。三种正常结束方法确实很有用,我会专门记下来备用!异常终止方式虽然比较极端,但也有其必要性,毕竟有时候需要紧急处理。

    有5位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
∞◆暯小萱◆

说的没错啊!经常遇到一些程序卡死的情况,不知道怎么正确处理掉。 这篇文章就很好的解决了我的困惑。看来以后只需要尝试三种正常结束方法就可以了,除非实在没办法再考虑异常终止吧!

    有6位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
在哪跌倒こ就在哪躺下

我对Linux的了解还比较有限,这篇博客让我受益匪浅!以前总是手忙脚乱地关进程,现在有了更科学的方法了,操作起来也更加方便了。

    有14位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
站上冰箱当高冷

我平时使用Linux系统不多,但是遇到过一些资源占用高的程序,没法正常关闭,最后只能重启系统。文章里提到的异常终止方法可以尝试一下,看看能不能避免重启带来的损失。

    有12位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
娇眉恨

写得真不错!很详细地介绍了各种进程终止的方法,而且使用语言通俗易懂,很容易理解。对于刚接触Linux的用户来说,这篇博客简直是必读的啊!

    有9位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
等量代换

为什么没有提到“killall”命令呢?我觉得在结束多个同名进程的时候,“killall”非常有用!

    有18位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
浅笑√倾城

文中提到的几种方法我都试过过了,效果挺好,总结得也很详细,但我觉得应该强调一下哪些情况下应该选择异常终止的方法,因为这样可能会对系统造成一定的影响。

    有12位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
惯例

这篇文章只是说了一些基本的进程管理方法,对于一些复杂的场景,比如需要分析进程运行状态、监控资源占用情况等,还需要学习其他更高级的工具和技术。

    有15位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
不浪漫罪名

感觉这篇博客有点浅层,没有深入讲解进程的具体状态转变机制,以及不同终止命令对进程的影响分析!

    有8位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
伤离别

终于找到一篇文章详细解说 Linux 中进程的正常结束与异常终止!这对于我学习 Linux 系统管理非常有帮助!感谢博主详细解释和说明!

    有19位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
别伤我i

这篇文章真是太实用啦!以前总是不太清楚怎么处理一些卡死进程的情况,现在有了这些方法可以参考了。以后遇到类似问题可以快速解决!

    有6位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
風景綫つ

这篇博客很有用,把三种正常结束进程的方法都介绍得很清晰,尤其是 "wait" 命令的使用场景让我收获满满!

    有14位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
海盟山誓总是赊

这篇文章应该加入一些实际案例,比如在各种常见的应用或系统中如何使用这些方法来处理进程的结束情况,这样会更加实用!

    有14位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
哥帅但不是蟋蟀

对Linux系统的理解比以前深了一层,谢谢博主分享这么好的文章!我已经开始尝试使用不同的终止方式去管理进程了。

    有11位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
寻鱼水之欢

我觉得这篇文章有些地方逻辑不是很清晰,比如为什么异常终止方法最后要使用 "kill" 命令呢?

    有20位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
肆忌

学习Linux系统一直是我的目标之一,这篇博文刚好解决了我的一个疑问!感谢博主分享如此实用的知识!我会继续关注你的博文!

    有16位网友表示赞同!

Linux中正常终止进程的3种方式和异常终止进程的2种方式
Edinburgh°南空

博主写的很棒啊,我终于明白了为什么进程结束会有两种方法了!以前总是用"kill" 命令直接终止进程,现在知道这样可能会造成数据丢失,以后会更加谨慎使用啦!

    有6位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/165765.html

(0)
小su's avatar小su
上一篇 2024年9月21日 下午12:01
下一篇 2024年9月21日 下午12:04

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注