在我的应用程序中,我使用调用打开一个文件open()
。
我的问题是:
- 如果我终止进程,文件是否会自动关闭(如使用
close()
返回的文件描述符上的调用)? - 如果应用程序崩溃(例如分段错误)会发生什么?
- 这是否记录在某处?
答案1
是的,当进程终止时,无论进程终止的原因如何,该文件都会自动关闭。
这是记录在 POSIX 中。在 ”进程终止的后果”,除其他后果外:
- 所有在调用进程中打开的文件描述符、目录流、转换描述符和消息目录描述符都应关闭。
并且在“终止进程”:
重要的是,无论进程是否调用,所描述的进程终止的后果都会发生_出口()(也许间接通过出口())或者由于信号或其他原因而终止。
答案2
你可以阅读有关Linux内核进程管理的内容,例如这里
进程终止
当进程终止时,内核释放该进程所拥有的资源,并通知子进程的父进程其终止。