Из документации file
:
IoDevice - это действительно pid процесса, который обрабатывает файл.Этот процесс связан с процессом, который первоначально открыл файл.Если какой-либо процесс, с которым связан IoDevice, завершается, файл будет закрыт, а сам процесс будет завершен.IoDevice, возвращаемый этим вызовом, может использоваться в качестве аргумента для функций ввода-вывода (см. Io (3)).
Таким образом, если процесс, открывший файл, умирает, файл будет закрыт автоматически.
Если вы используете OTP и хотите быть абсолютно уверены, что ваш файл был закрыт, когда ваш процесс умирает, добавьте file:close
к функции terminate
.Конечно, ваш gen_ * должен быть прикреплен к руководителю.