Adi*_*Adi 4 linux operating-system linux-device-driver linux-kernel
作为Linux设备驱动程序开发人员,我认为文件对象是每个进程的本地结构,并且其地址在fd表中可用于相应的fd.但当我在Michale Kerrisk的Linux编程界面中遇到5.6节时说明了这一点
引用相同打开文件描述的两个不同文件描述符共享文件偏移值.因此,如果通过一个文件描述符更改文件偏移量(作为对read(),write()或lseek()的调用),则通过另一个文件描述符可以看到此更改.这适用于两个文件描述符属于同一进程以及它们属于不同进程的情况.
我被迷惑了...请帮助我提高理解力.
每个进程都有自己的文件描述符表,每次open()编辑文件时都会生成一个单独的文件描述.那里有理智!
例外情况是文件描述符在进程内(通过dup())或跨进程(通过一个处理fork()具有所有相同FD的副本,或通过将文件描述符传递到UNIX域套接字)复制.当发生这种情况时,两个描述符最终会相互共享一些属性,包括偏移量.
这不一定是坏事.例如,这意味着两个写入共享文件描述符的进程最终都不会覆盖彼此的输出.但它有时会产生意想不到的结果.但是,如果不了解它,通常不会出现这种情况.
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |