Home Backend Development PHP Tutorial Quote the differences between exit, return, _exit, and _Exit functions

Quote the differences between exit, return, _exit, and _Exit functions

Nov 26, 2016 am 10:18 AM

1. The main difference between the exit function and the return function is:

exit is used to end the program at any time while the program is running, and its parameters are returned to the OS. It can also be said that the exit function exits the application and returns a status of the application to the OS. This status identifies some running information of the application.

The exit function will also be called implicitly when the main function ends. When the exit function is running, it will first execute the function registered by the atexit() function, and then do some cleaning work of its own, while refreshing all output streams and closing all open ones. Stream and close the temporary file created by the standard I/O function tmpfile().

exit is a system call level. It indicates the end of a process. It will delete the memory space used by the process and return error information to the parent process. Usually: exit(0) indicates that the program is normal, exit(1) and exit(-1) indicate that the program exited abnormally, and exit(2) indicates that the system cannot find the specified file.

return is at the language level, it represents the return of the call stack; return is to return the function value and exit the function, usually 0 is a normal exit, non-0 is an abnormal exit, please note that if it is in the main function main, naturally This ends the current process (that is, in main(), you can use return n, or you can directly use exit(n) to do it). If it is not in the main function, it will return to the previous call. When there are multiple processes, if you sometimes want to detect whether the previous process exited normally, you need to use the return value of the previous process.

2. Process environment and process control

If exit(int n) is called in the main function, then exit(int n) will directly exit the program and return an int value. Generally, under the shell, run a program, and then use the command echo $? to get the return value of the program, which is the exit value. Theoretically, exit can return any integer less than 256. The different values ​​returned are mainly for different processing by the caller.

For a single process, the return value of exit is returned to the operating system, but if it is a multi-process, it is returned to the parent process. Call functions such as waitpid() in the parent process to obtain the exit status of the child process for different processing. Let the caller perform corresponding processing according to the corresponding return value.

In general, exit (int n) means that the current process returns its control to the main program that called the subroutine. The return value in parentheses tells the calling program the running status of the program.

1. The beginning of the process:

The C program starts execution from the main function. The prototype is as follows:

int main(int argc, char *argv[]);
Copy after login

Usually the return value of main is int type, and 0 is returned correctly.

2. Process termination:

C program termination is divided into two types: normal termination and abnormal termination.

Normal termination is divided into: return, exit, _exit, _Exit, pthreade_exit.

Exception middle finger is divided into: abort, SIGNAL, thread response cancellation.

Mainly talk about the first four types of normal termination, that is, the exit series of functions.

#include <stdlib.h> void exit(int status); void _Exit(int status); #include <unistd.h> void _exit(int status);
Copy after login

The difference between the above three functions is:

exit() (or return 0) will call the termination handler and the standard I/ of user space O cleanup program (such as fclose), while _exit and _Exit are not called and are directly taken over by the kernel for cleaning. Therefore, exit(0) in the main function is equivalent to return 0.

3. atexit termination handler:

ISO C stipulates that a process can register up to 32 termination handler functions. These functions are automatically called by exit in the reverse order of registration. If the same function is registered multiple times, it will also be called multiple times.

The prototype is as follows:

#include int atexit(void (*func)(void));

其中参数是一个函数指针, 指向终止处理函数, 该函数无参无返回值。atexit函数本身成功调用后返回0。

以下面的程序为例:

#include <stdlib.h> static void myexit1()
{ printf("first exit handlern");
} static void myexit2()
{ printf("second exit handlern");
} int main()
{
atexit(my_exit2);
atexit(my_exit1);
atexit(my_exit1); printf("main is donen"); return 0; // 相当于exit(0) }
Copy after login

运行结果:

$ ./a.out
main is done first exit handler first exit handler second exit handler
Copy after login

main函数结束时也会隐式地调用exit函数,exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。

注意上面程序的结果,可以发现这些函数由exit按登记相反的顺序自动调用(先myexit1后myexit2)。如果同一函数登记多次, 也会被调用多次(如这里的myexit1)。

而这些处理函数都是在程序退出的时候利用atexit函数调用了这些处理函数。但是如果用_exit()退出程序,则它不关闭任何文件,不清除任何缓冲器、也不调用任何终止函数!


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

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.

Undress AI Tool

Undress AI Tool

Undress images for free

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)

Hot Topics

Java Tutorial
1663
14
PHP Tutorial
1263
29
C# Tutorial
1236
24
Explain different error types in PHP (Notice, Warning, Fatal Error, Parse Error). Explain different error types in PHP (Notice, Warning, Fatal Error, Parse Error). Apr 08, 2025 am 12:03 AM

There are four main error types in PHP: 1.Notice: the slightest, will not interrupt the program, such as accessing undefined variables; 2. Warning: serious than Notice, will not terminate the program, such as containing no files; 3. FatalError: the most serious, will terminate the program, such as calling no function; 4. ParseError: syntax error, will prevent the program from being executed, such as forgetting to add the end tag.

Explain secure password hashing in PHP (e.g., password_hash, password_verify). Why not use MD5 or SHA1? Explain secure password hashing in PHP (e.g., password_hash, password_verify). Why not use MD5 or SHA1? Apr 17, 2025 am 12:06 AM

In PHP, password_hash and password_verify functions should be used to implement secure password hashing, and MD5 or SHA1 should not be used. 1) password_hash generates a hash containing salt values ​​to enhance security. 2) Password_verify verify password and ensure security by comparing hash values. 3) MD5 and SHA1 are vulnerable and lack salt values, and are not suitable for modern password security.

PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP in Action: Real-World Examples and Applications PHP in Action: Real-World Examples and Applications Apr 14, 2025 am 12:19 AM

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

What are HTTP request methods (GET, POST, PUT, DELETE, etc.) and when should each be used? What are HTTP request methods (GET, POST, PUT, DELETE, etc.) and when should each be used? Apr 09, 2025 am 12:09 AM

HTTP request methods include GET, POST, PUT and DELETE, which are used to obtain, submit, update and delete resources respectively. 1. The GET method is used to obtain resources and is suitable for read operations. 2. The POST method is used to submit data and is often used to create new resources. 3. The PUT method is used to update resources and is suitable for complete updates. 4. The DELETE method is used to delete resources and is suitable for deletion operations.

PHP: A Key Language for Web Development PHP: A Key Language for Web Development Apr 13, 2025 am 12:08 AM

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

Explain the difference between self::, parent::, and static:: in PHP OOP. Explain the difference between self::, parent::, and static:: in PHP OOP. Apr 09, 2025 am 12:04 AM

In PHPOOP, self:: refers to the current class, parent:: refers to the parent class, static:: is used for late static binding. 1.self:: is used for static method and constant calls, but does not support late static binding. 2.parent:: is used for subclasses to call parent class methods, and private methods cannot be accessed. 3.static:: supports late static binding, suitable for inheritance and polymorphism, but may affect the readability of the code.

How does PHP handle file uploads securely? How does PHP handle file uploads securely? Apr 10, 2025 am 09:37 AM

PHP handles file uploads through the $\_FILES variable. The methods to ensure security include: 1. Check upload errors, 2. Verify file type and size, 3. Prevent file overwriting, 4. Move files to a permanent storage location.

See all articles