Иногда я использую следующий фрагмент кода для чтения файлов (код проверки ошибок опущен):
db = open(db_path, O_RDONLY);
fstat(db, info);
buffer = mmap(0, info->st_size, PROT_READ, MAP_PRIVATE, db, 0);
close(db);
Обратите внимание, что я закрываю файл после вызова mmap. Затем, когда я закончу с buffer
:
munmap(buffer, info->st_size);
Что произойдет, если кто-то удалит последнюю жесткую ссылку на файл из файловой системы (например, unlink(db_path)
) и ни у одного процесса нет дескриптора файла? Приведет ли это к неопределенному поведению или операционная система хранит файл до тех пор, пока он не будет удален? Я не смог найти документацию, в которой явно указано одно или другое.