Address: http://blog.sina.com.cn/s/blog_4850a7880100hncm.html
Reference: http://lzjyjh.blog.sohu.com/137646727.html
-----------------------------------------------
In Unix OS, the system calls exit to terminate a process. Calls that can be displayed by the ProcessExit System Call to terminate 1Processes, you can alsoReturn at the end of the program.(Startup
Routine calls exit when a C program returns from the main function ).
The method for calling exit is as follows:
Exit (Status );
Status is returnedBack to parent processOfTermination code. When a process exitsThe process is in zombie
State.
The following events occur when the exit system calls the execution:
1.Clear current processAll signal processing functions.
2. If the current process is associated with the terminal,Process Group LeaderTo process in each group.Send hang-up
SignalAnd set the process group of these Members to 0.
3. PassKernel internal AlgorithmDisable all open file descriptors of the current processAnd releaseCurrent DirectoryInode associated; If current exists
(Charged) Root, also released through the algorithm Iput.
4. ProcessReleaseAllRegion and associated memory.
5.Time when the sub-process of the computing process machine is executed(User
Mode and kernel mode), and write the record to a global accounting file.
6. SetThe Process status changes to zombie., AndSet all of your sub-ProcessesParent process ID is set to 1 (init);IfThe status of the child is zombie.,InitProcess sends sigchld SignalTo clear the process of the sub-process
Table slot.
7. the exiting process sends a sigchld signal to its parent process.
8. Perform Context
Switch,Schedule other non-zombie Processes(This process is already zombie ).
Before discussing exit and _ exit, we should first discuss the issue of File Memory Cache areas.
In Linux,Standard input/output (I/O) functions areProcess as a file. Corresponds toEach fileIn the memory.Corresponding CacheEach time you read a file, some records will be read to the cache, so that the next time you read the file, it will be read in the cache; similarly,When writing a file, it is also written in the corresponding cache of the file, not directly written into the file on the hard disk..Line Break \ n or end mark EOF. The advantage of doing so is to speed up reading and writing files! But this also brings about some problems: for example, some data, we think the file has been written, but in factThe cache that does not meet certain conditions and does not reside in the memory.In this way, if weDirectly use the _ exit () function to terminate the process.Data Loss!!
The reader may have noticed that _ exit is used instead of exit. If it is changed to exit, there will be no data loss problem. This is the difference between them! To explain this problem, we need to involve their work steps.
Exit (): When executing this function, the process checks the file opening status,Clear the I/O cache. If there is data in the cache, it will write them into the corresponding file.This prevents the loss of file data! Then terminate the process.
_ Exit (): When executing this function, it does not clear the standard input/output cache, but directly clears the memory space. Of course, it destroys the data that has not been written to the file cache. It can be seen that using the exit () function is more secure.
In addition, the differences between the two are as follows:Exit () -- stdlib. h _ Exit () -- unistd. h
Finally, the general situation is as follows:Exit (0) indicates normal exit, exit (1), exit (-1) indicates abnormal exit, 0, 1,-1 is the return value, The specific meaning can be customized.
Exit seems to be in stdio. H, so it must contain header files.
Return indicates a function call. If the main function is returned, the system exits the program.
Exit is to forcibly exit the program at the call. Once the program is run, it will end.
-------------------------------------------------------------------
Return
Yes
Function return
While exit indicates exit.
-------------------------------------------------------------------
Exit (1) indicates an exception exits. This 1 isReturnReturned to the Operating SystemHowever, DOS does not seem to require this return value.
Exit (0) indicates normal exit
-------------------------------------------------------------------
No matter where it is written, it is a program launched, DOS and Windows are nothing different, at most the system processing is different.
Numbers 0, 1,-1 will be writtenEnvironment Variable errorlevelAnd other programs can determine the end state of the program.
Generally, 0 is normal, and other numbers are abnormal. You can specify the corresponding error.
-------------------------------------------------------------------
If it is returned to the operating system, 0 indicates normal exit, and other values indicate abnormal exit. Before exiting, You can provide some prompt information or check the cause of the error in the debugging program.