- Mastering Linux Kernel Development
- Raghu Bharadwaj
- 202字
- 2021-07-08 09:47:20
exit
Every process must end. Process termination is done either by the process calling exit() or when the main function returns. A process may also be terminated abruptly on receiving a signal or exception that forces it to terminate, such as the KILL command, which sends a signal to kill the process, or when an exception is raised. Upon termination, the process is put into exit state until the immediate parent reaps it.
The exit calls the sys_exit system call, which internally calls the do_exit routine. The do_exit primarily performs the following tasks (do_exit sets many values and makes multiple calls to related kernel routines to complete its task):
- Takes the exit code returned by the child to the parent.
- Sets the PF_EXITING flag, indicating process exiting.
- Cleans up and reclaims the resources held by the process. This includes releasing mm_struct, removal from the queue if it is waiting for an IPC semaphore, release of filesystem data and files, if any, and calling schedule() as the process is no longer executable.
After do_exit, the process remains in zombie state and the process descriptor is still intact for the parent to collect the status, after which the resources are reclaimed by the system.
- 國際大學生程序設計競賽中山大學內部選拔真題解(二)
- Oracle Exadata性能優化
- LabVIEW入門與實戰開發100例
- QGIS:Becoming a GIS Power User
- 劍指MySQL:架構、調優與運維
- 深入淺出Serverless:技術原理與應用實踐
- C#程序設計(項目教學版)
- CodeIgniter Web Application Blueprints
- 官方 Scratch 3.0 編程趣味卡:讓孩子們愛上編程(全彩)
- Web前端開發最佳實踐
- PHP項目開發全程實錄(第4版)
- PostgreSQL 12 High Availability Cookbook
- Jakarta EE Cookbook
- Building Microservices with Go
- Getting Started with RethinkDB