Home System Tutorial LINUX How to end a process under Linux: Detailed explanation of normal and abnormal termination

How to end a process under Linux: Detailed explanation of normal and abnormal termination

Jul 18, 2024 pm 10:11 PM

Linux 下结束进程的方法:正常与异常终止详解

In the first two chapters, we learned about creating processes. In this chapter, we will learn how to end the process under Linux.

In Linux, there are 3 ways to end a process normally and 2 ways to terminate abnormally:

1. Normal end:

a. Call return in the main function. This is equivalent to calling exit.

b. Call the exit function. According to the definition of this function in ANSIC, when called, all registered exit handles will be executed, all standard I/O streams will be turned off, and file descriptors and multiple processes (parent processes) will not be processed. (with child processes), jobs, etc., so it is not sound for Linux systems.

c. Call the _exit function. Exit is called linux training by _exit and closes some linux-specific exit handles.

2. Abnormal termination

linux保存退出命令行_linux退出保存文件_linux下退出不保存

a. Call abort. This seems to be a special case of the second case, since it forms a SIGABRT signal.

b. The process receives a specific signal. This signal can be generated by the process itself (such as the abort function), or it can come from other processes or the kernel. For example: when a process attempts to access an out-of-bounds memory address or when the divisor is zero, the kernel will generate a signal to interrupt the process.

No matter which method is used to end the process, the same piece of code in the kernel will eventually be executed. This code closes all file descriptors opened by the process, the video memory occupied by private access, etc.

Let’s take a look at the exit and _exit functions

These two functions are in different header files: exit is in stdlib.h, _exit is in unistd.h

linux退出保存文件_linux下退出不保存_linux保存退出命令行

Their specific calling methods are as follows:

voidexit(int__status)

void_exit(int__status)

The status parameter is the exit status.

Let’s take a look at the following two pieces of code:

linux保存退出命令行_linux下退出不保存_linux退出保存文件

Picture 1

linux下退出不保存_linux退出保存文件_linux保存退出命令行

Picture 2

linux退出保存文件_linux保存退出命令行_linux下退出不保存

linux保存退出命令行_linux下退出不保存_linux退出保存文件

Picture 3

linux保存退出命令行_linux退出保存文件_linux下退出不保存

Picture 4

The code in Figure 1 lacks n, resulting in the sentence at the end of the test not being copied. This is because if printf does not add n, the information will not be copied immediately, and _exit will not force the output of the data in the buffer. , that is, the data that has not been written to the device and is still in the buffer caused by calls such as printf/fprintf will be discarded. The copy information will be lost during _exit, but not with exit. If there is n, copy it directly. At this time, there is no difference between exit/_exit

The different order in which the brother and sister processes are terminated will produce different results

1. The parent process terminates before the child process:

This situation is what we call an orphan process. When the parent process exits first, the system will let the init process take over the child process.

2. The child process terminates before the parent process, and the parent process does not call the wait function

In this case, the sub-process enters a zombie state and will remain so until the system is restarted. When the child process is in a zombie state Under Linux, it exits without saving. The kernel only saves some necessary information of the process for the parent process. At this time, the child process still occupies resources, and it also reduces the maximum number of processes that can be created by the system.

What are the zombie states?

A process that has been terminated long ago, but its parent process has not yet dealt with the aftermath (obtaining information about the terminated child process and releasing the resources it still occupies) is called a zombie process (zombie).

3. The child process terminates before the parent processExits without saving under Linux, but the parent process calls the wait function

At this time, the parent process will wait for the child process to end.

The above is the detailed content of How to end a process under Linux: Detailed explanation of normal and abnormal termination. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

The Ultimate Guide to High-Performance Gaming on Linux The Ultimate Guide to High-Performance Gaming on Linux Aug 03, 2025 am 05:51 AM

ChoosePop!_OS,Ubuntu,NobaraLinux,orArchLinuxforoptimalgamingperformancewithminimaloverhead.2.InstallofficialNVIDIAproprietarydriversforNVIDIAGPUs,ensureup-to-dateMesaandkernelversionsforAMDandIntelGPUs.3.EnabletheperformanceCPUgovernor,usealow-latenc

What are the main pros and cons of Linux vs. Windows? What are the main pros and cons of Linux vs. Windows? Aug 03, 2025 am 02:56 AM

Linux is suitable for old hardware, has high security and is customizable, but has weak software compatibility; Windows software is rich and easy to use, but has high resource utilization. 1. In terms of performance, Linux is lightweight and efficient, suitable for old devices; Windows has high hardware requirements. 2. In terms of software, Windows has wider compatibility, especially professional tools and games; Linux needs to use tools to run some software. 3. In terms of security, Linux permission management is stricter and updates are convenient; although Windows is protected, it is still vulnerable to attacks. 4. In terms of difficulty of use, the Linux learning curve is steep; Windows operation is intuitive. Choose according to requirements: choose Linux with performance and security, and choose Windows with compatibility and ease of use.

Understanding RAID Configurations on a Linux Server Understanding RAID Configurations on a Linux Server Aug 05, 2025 am 11:50 AM

RAIDimprovesstorageperformanceandreliabilityonLinuxserversthroughvariousconfigurations;RAID0offersspeedbutnoredundancy;RAID1providesmirroringforcriticaldatawith50�pacityloss;RAID5supportssingle-drivefailuretoleranceusingparityandrequiresatleastthre

Linux how to enable and disable services at boot Linux how to enable and disable services at boot Aug 08, 2025 am 10:23 AM

To manage the startup of Linux services, use the systemctl command. 1. Check the service status: systemctlstatus can check whether the service is running, enabled or disabled. 2. Enable the service startup: sudosystemctlenable, such as sudosystemctlenablenginx. If it is started at the same time, use sudosystemctlenable--nownginx. 3. Disable the service startup: sudosystemctldisable, such as sudosystemctldisablecups. If it is stopped at the same time, use sudosystemctldisabl

Setting up a Development Environment on Linux for Python Setting up a Development Environment on Linux for Python Aug 03, 2025 am 12:26 AM

InstallPythonandessentialtoolsusingyourdistribution’spackagemanager,ensuringpython3-venvandpython3-devareincludedforenvironmentisolationandCextensions.2.Alwaysusevirtualenvironmentsbyrunningpython3-mvenvmyproject_envandactivatewithsourcemyproject_env

How to set up a firewall in Linux How to set up a firewall in Linux Aug 22, 2025 pm 04:41 PM

UsefirewalldoriptablestosecureLinux;firewalldisuser-friendlywithzonesandservices,idealforCentOS/RHEL/Fedora,whileiptablesoffersgranularcontrolforDebian/Ubuntu.Enablefirewalld:sudosystemctlstartfirewalld,allowserviceslikeSSHwith--add-service=ssh,orope

Linux how to list all running processes Linux how to list all running processes Aug 08, 2025 am 06:42 AM

Usepsauxforacompletesnapshotofallrunningprocesses,showingdetailedinformationlikeUSER,PID,CPU,andmemoryusage.2.Usetoporhtopforreal-timemonitoringofprocesseswithdynamicupdates,wherehtopoffersamoreintuitiveinterface.3.UsepgreporpidoftoquicklyfindthePIDs

How to clean up your Linux system How to clean up your Linux system Aug 22, 2025 am 07:42 AM

Removeunusedpackagesanddependencieswithsudoaptautoremove,cleanpackagecacheusingsudoaptcleanorautoclean,andremoveoldkernelsviasudoaptautoremove--purge.2.Clearsystemlogswithsudojournalctl--vacuum-time=7d,deletearchivedlogsin/var/log,andempty/tmpand/var

See all articles