无论如何在Linux(或更一般地说在POSIX OS中)保证在程序执行期间,即使文件被关闭而另一个文件被打开,也不会重复使用文件描述符?我的理解是,这种情况通常会导致已关闭文件的文件描述符被重新分配给新打开的文件.
我正在开发一个I/O跟踪项目,如果我可以假设在open()/ fopen()调用后,该文件描述符的所有后续I/O都是同一个文件,那么它会让生活更简单.
我将采用编译时或运行时解决方案.
如果这是不可能的,我可以做我自己的会计,当我处理跟踪文件(注意所有的打开和关闭通话的位置),但我更愿意被跟踪程序的执行过程中压制该问题.
请注意,POSIX要求:
在开放式()函数应命名的文件,它是最低的文件描述符目前没有开放这个过程返回的文件描述符.
因此,从最严格的意义上讲,您的请求将改变程序的环境,使其不再符合POSIX标准.
也就是说,我认为最好的办法是使用LD_PRELOAD技巧拦截调用close并忽略它们.
| 归档时间: |
|
| 查看次数: |
3218 次 |
| 最近记录: |