Есть ли вообще в Linux (или, в общем, в ОС POSIX), чтобы гарантировать, что во время выполнения программы никакие дескрипторы файлов не будут повторно использоваться, даже если файл закрыт, а другой открыт? Я понимаю, что эта ситуация обычно приводит к тому, что дескриптор файла для закрытого файла переназначается вновь открытому файлу.Предотвращение повторного использования файловых дескрипторов
Я работаю над проектом трассировки ввода-вывода, и это упростит жизнь, если я могу предположить, что после вызова open()/fopen() все последующие операции ввода-вывода с этим файловым дескриптором относятся к тому же файл.
Я возьму либо решение для компиляции, либо время выполнения.
Если это невозможно, я могу сделать свой собственный учет при обработке файла трассировки (отмечая местоположение всех открытых и закрытых вызовов), но я предпочел бы выкачать проблему во время выполнения трассированной программы.
Я думаю, вы должны взять второй подход (делая свой собственный учет). Изменение поведения присвоения дескриптора файла (которое строго указано POSIX) на что-то несоответствующее, будет прерывать программы тонким (и, возможно, опасным) способом. –