Please help me in clarifying the concept of these two python statements in terms of difference in functionality:
- sys.exit(0)
- os._exit(0)
Please help me in clarifying the concept of these two python statements in terms of difference in functionality:
sys.exit(0)
os._exit(0)
 
    
     
    
    According to the documentation:
os._exit():Exit the process with status n, without calling cleanup handlers, flushing stdio buffers, etc.
Note The standard way to exit is
sys.exit(n)._exit()should normally only be used in the child process after afork().
 
    
    os._exit calls the C function _exit() which does an immediate program
termination. Note the statement "can never return".
sys.exit() is identical to raise SystemExit(). It raises a Python
exception which may be caught by the caller.
Original post: http://bytes.com/topic/python/answers/156121-os-_exit-vs-sys-exit
 
    
    Excerpt from the book "The linux Programming Interface":
Programs generally don’t call _exit() directly, but instead call the exit() library function,
which performs various actions before calling _exit().
at_exit() and on_exit()) are called, in
reverse order of their registration_exit() system call is invoked, using the value supplied in status.Could someone expand on why _exit() should normally only be used in the child process after a fork()?
Instead of calling exit(), the child can call _exit(), so that it doesn’t flush stdio
buffers. This technique exemplifies a more general principle: in an application
that creates child processes, typically only one of the processes (most often the
parent) should terminate via exit(), while the other processes should terminate
via _exit(). This ensures that only one process calls exit handlers and flushes
stdio buffers, which is usually desirable
