


How to end a process under Linux: Detailed explanation of normal and abnormal termination
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
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
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:
Picture 1
Picture 2
Picture 3
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!

The core of the Linux operating system is its command line interface, which can perform various operations through the command line. 1. File and directory operations use ls, cd, mkdir, rm and other commands to manage files and directories. 2. User and permission management ensures system security and resource allocation through useradd, passwd, chmod and other commands. 3. Process management uses ps, kill and other commands to monitor and control system processes. 4. Network operations include ping, ifconfig, ssh and other commands to configure and manage network connections. 5. System monitoring and maintenance use commands such as top, df, du to understand the system's operating status and resource usage.

Introduction Linux is a powerful operating system favored by developers, system administrators, and power users due to its flexibility and efficiency. However, frequently using long and complex commands can be tedious and er

Linux is suitable for servers, development environments, and embedded systems. 1. As a server operating system, Linux is stable and efficient, and is often used to deploy high-concurrency applications. 2. As a development environment, Linux provides efficient command line tools and package management systems to improve development efficiency. 3. In embedded systems, Linux is lightweight and customizable, suitable for environments with limited resources.

Introduction: Securing the Digital Frontier with Linux-Based Ethical Hacking In our increasingly interconnected world, cybersecurity is paramount. Ethical hacking and penetration testing are vital for proactively identifying and mitigating vulnerabi

The methods for basic Linux learning from scratch include: 1. Understand the file system and command line interface, 2. Master basic commands such as ls, cd, mkdir, 3. Learn file operations, such as creating and editing files, 4. Explore advanced usage such as pipelines and grep commands, 5. Master debugging skills and performance optimization, 6. Continuously improve skills through practice and exploration.

Linux is widely used in servers, embedded systems and desktop environments. 1) In the server field, Linux has become an ideal choice for hosting websites, databases and applications due to its stability and security. 2) In embedded systems, Linux is popular for its high customization and efficiency. 3) In the desktop environment, Linux provides a variety of desktop environments to meet the needs of different users.

The disadvantages of Linux include user experience, software compatibility, hardware support, and learning curve. 1. The user experience is not as friendly as Windows or macOS, and it relies on the command line interface. 2. The software compatibility is not as good as other systems and lacks native versions of many commercial software. 3. Hardware support is not as comprehensive as Windows, and drivers may be compiled manually. 4. The learning curve is steep, and mastering command line operations requires time and patience.

Linuxisnothardtolearn,butthedifficultydependsonyourbackgroundandgoals.ForthosewithOSexperience,especiallycommand-linefamiliarity,Linuxisaneasytransition.Beginnersmayfaceasteeperlearningcurvebutcanmanagewithproperresources.Linux'sopen-sourcenature,bas


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Dreamweaver CS6
Visual web development tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

Zend Studio 13.0.1
Powerful PHP integrated development environment

WebStorm Mac version
Useful JavaScript development tools