【发布时间】:2023-03-22 14:51:01
【问题描述】:
在 Linux 中(或更一般地在 POSIX 操作系统中)是否有保证在程序执行期间不会重用任何文件描述符,即使一个文件关闭并打开另一个文件?我的理解是这种情况通常会导致关闭文件的文件描述符被重新分配给新打开的文件。
我正在做一个 I/O 跟踪项目,如果我可以假设在 open()/fopen() 调用之后,对该文件描述符的所有后续 I/O 都指向同一个文件,这将使生活变得更简单.
我将采用编译时或运行时解决方案。
如果不可能,我可以在处理跟踪文件时自己记帐(注意所有打开和关闭调用的位置),但我更愿意在跟踪程序执行期间解决问题。
【问题讨论】:
-
我认为你应该采取第二种方法(自己做会计)。将文件描述符分配的行为(由 POSIX 严格指定)更改为不符合标准的行为会以微妙(并且可能是危险的)方式破坏程序。