O que acontece com os descritores de arquivo quando o processo é eliminado?

1

No meu aplicativo, abro um arquivo usando a chamada open() .

Minhas perguntas são:

  • O arquivo é fechado automaticamente (como usando a chamada close() no descritor de arquivo retornado) se eu eliminar o processo?
  • O que acontece se o aplicativo falhar (por exemplo, falha de segmentação)?
  • Isto está documentado em algum lugar?
por sapg 15.03.2018 / 11:28

2 respostas

4

Sim, o arquivo será fechado automaticamente quando o processo terminar, independentemente do motivo da finalização do processo.

Isso é documentado em POSIX . Em " Consequências da rescisão do processo ", entre outras consequências:

  • All of the file descriptors, directory streams, conversion descriptors, and message catalog descriptors open in the calling process shall be closed.

E em " Encerrar um processo ”:

It is important that the consequences of process termination as described occur regardless of whether the process called _exit() (perhaps indirectly through exit()) or instead was terminated due to a signal or for some other reason.

    
por 15.03.2018 / 11:40
0

Você pode ler sobre o Linux Kernel Process Management, por exemplo, aqui

Process Termination

When a process terminates, the kernel releases the resources owned by the process and notifies the child's parent of its demise.

    
por 15.03.2018 / 11:40