¿Hay alguna forma en Linux (o más generalmente en un sistema operativo POSIX) que garantice que durante la ejecución de un programa no se reutilizarán los descriptores de archivo, incluso si un archivo se cierra y se abre otro? Tengo entendido que esta situación generalmente llevaría a que el descriptor de archivo para el archivo cerrado se reasigne al archivo recién abierto.Evitando la reutilización de descriptores de archivos
Estoy trabajando en un proyecto de seguimiento de E/S y haría la vida más fácil si pudiera asumir que después de una llamada open()/fopen(), todas las E/S posteriores a ese descriptor de archivo son iguales archivo.
Tomaré una solución en tiempo de compilación o en tiempo de ejecución.
Si no es posible, podría hacer mi propia contabilidad cuando procese el archivo de rastreo (teniendo en cuenta la ubicación de todas las llamadas de abrir y cerrar), pero preferiría eliminar el problema durante la ejecución del programa rastreado.
Creo que debería tomar el segundo enfoque (hacer su propia contabilidad). Cambiar el comportamiento de la asignación del descriptor de archivo (estrictamente especificado por POSIX) a algo no conforme romperá los programas de maneras sutiles (y posiblemente peligrosas). –