当进程被终止时,文件描述符会发生什么?

当进程被终止时,文件描述符会发生什么?

在我的应用程序中,我使用调用打开一个文件open()

我的问题是:

  • 如果我终止进程,文件是否会自动关闭(如使用close()返回的文件描述符上的调用)?
  • 如果应用程序崩溃(例如分段错误)会发生什么?
  • 这是否记录在某处?

答案1

是的,当进程终止时,无论进程终止的原因如何,该文件都会自动关闭。

这是记录在 POSIX 中。在 ”进程终止的后果”,除其他后果外:

  • 所有在调用进程中打开的文件描述符、目录流、转换描述符和消息目录描述符都应关闭。

并且在“终止进程”:

重要的是,无论进程是否调用,所描述的进程终止的后果都会发生_出口()(也许间接通过出口())或者由于信号或其他原因而终止。

答案2

你可以阅读有关Linux内核进程管理的内容,例如这里

进程终止

当进程终止时,内核释放该进程所拥有的资源,并通知子进程的父进程其终止。

相关内容