Linux 下结束进程的方法:正常与异常终止详解
在前两章中我们了解了创建进程,这一章我们来了解下,在linux下如何结束进程。
在linux中,有3种正常结束进程的方式和2种异常中止的方式:
1、正常结束:
a、在main函数中调用return。这个相当于调用exit。
b、调用exit函数,按这个函数在ANSIC中的定义,调用时将执行所有注册过的exit句柄,关掉所有的标准I/O流,而且并不处理文件描述符、多进程(父进程与子进程)、作业等,因此对linux系统而言并不健全。
c、调用_exit函数。exit被_exit调用linux培训,关掉一些linux特有的退出句柄。
2、异常中止
a、调用abort。这个似乎是第二种情形的特例,由于它形成一个SIGABRT讯号。
b、进程收到特定讯号,这个讯号可以是进程自己形成的(如abort函数),也可以来自其他进程或内核。诸如:进程试图访问越界的显存地址或则除数为零时linux模拟,内核就会形成讯号中断进程。
不管用何种方法结束进程,最终都要执行内核的同一段代码。这段代码关掉该进程打开的所有文件描述符,私访占用的显存等。
接出来我们来了解下exit和_exit函数
这两个函数在不同的头文件中:exit在stdlib.h中,_exit在unistd.h中
她们的具体调用方式如下:
voidexit(int__status)
void_exit(int__status)
参数status为退出的状态。
我们来看一下下边这两段代码:
图1
图2
图3
图4
图1的代码缺乏了n造成了没有复印出测试结束的句子,这是由于printf若果不加n,则信息是不会立即复印下来的,而_exit不会强制输出缓冲区中的数据,即通过printf/fprintf这类调用形成的仍未写入设备仍在缓冲中的数据就会遗弃,_exit时复印信息会遗失,而exit不会。假如有n,则直接复印下来,此时exit/_exit无区别
兄妹进程中止的先后次序不同会形成不同的结果
1.父进程先于子进程中止:
此种情况就是我们所说的孤儿进程。当父进程先退出时,系统会让init进程接管子进程。
2.子进程先于父进程中止,而父进程又没有调用wait函数
此种情况子进程步入僵死状态,而且会始终保持下去直至系统重启。子进程处于僵死状态时linux下退出不保存,内核只保存进程的一些必要信息以备父进程所需。此时子进程仍然占有着资源,同时也降低了系统可以创建的最大进程数。
哪些是僵死状态呢?
一个早已中止、但是其父进程仍未对其进行善后处理(获取中止子进程的有关信息,释放它仍占有的资源)的进程被称为僵死进程(zombie)。
3.子进程先于父进程中止linux下退出不保存,而父进程调用了wait函数
此时父进程会等待子进程结束。
以上是Linux 下结束进程的方法:正常与异常终止详解的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

互联网运行不依赖单一操作系统,但Linux在其中扮演重要角色。Linux广泛应用于服务器和网络设备,因其稳定性、安全性和可扩展性受欢迎。

Linux管理员的平均年薪在美国为75,000至95,000美元,欧洲为40,000至60,000欧元。提升薪资可以通过:1.持续学习新技术,如云计算和容器技术;2.积累项目经验并建立Portfolio;3.建立职业网络,拓展人脉。

Linux系统管理员的主要任务包括系统监控与性能调优、用户管理、软件包管理、安全管理与备份、故障排查与解决、性能优化与最佳实践。1.使用top、htop等工具监控系统性能,并进行调优。2.通过useradd等命令管理用户账户和权限。3.利用apt、yum管理软件包,确保系统更新和安全。4.配置防火墙、监控日志、进行数据备份以确保系统安全。5.通过日志分析和工具使用进行故障排查和解决。6.优化内核参数和应用配置,遵循最佳实践提升系统性能和稳定性。

Linux的主要用途包括:1.服务器操作系统,2.嵌入式系统,3.桌面操作系统,4.开发和测试环境。Linux在这些领域表现出色,提供了稳定性、安全性和高效的开发工具。

Linux和Windows在虚拟化支持上的主要区别在于:1)Linux提供KVM和Xen,性能和灵活性突出,适合高定制环境;2)Windows通过Hyper-V支持虚拟化,界面友好,与Microsoft生态系统紧密集成,适合依赖Microsoft软件的企业。

学习Linux并不难。1.Linux是一个开源操作系统,基于Unix,广泛应用于服务器、嵌入式系统和个人电脑。2.理解文件系统和权限管理是关键,文件系统是层次化的,权限包括读、写和执行。3.包管理系统如apt和dnf使得软件管理方便。4.进程管理通过ps和top命令实现。5.从基本命令如mkdir、cd、touch和nano开始学习,再尝试高级用法如shell脚本和文本处理。6.常见错误如权限问题可以通过sudo和chmod解决。7.性能优化建议包括使用htop监控资源、清理不必要文件和使用sy

多年来,Linux软件分布依赖于DEB和RPM等本地格式,并深深地根深蒂固。 但是,Flatpak和Snap已经出现,有望成为应用程序包装的通用方法。 本文考试

本指南探讨了用于比较Linux中文本文件的各种方法,Linux是系统管理员和开发人员的关键任务。 我们将介绍命令行工具和视觉差异工具,突出显示其优势和适当的用例。 假设
