加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 每个进程或系统范围内的文件对象是本地的吗?

发布时间:2020-12-13 23:08:54 所属栏目:Linux 来源:网络整理
导读:作为 Linux设备驱动程序开发人员,我认为文件对象是每个进程的本地结构,并且其地址在fd表中可用于相应的fd.但当我在Michale Kerrisk的Linux编程界面中遇到5.6节时说明了这一点 Two different file descriptors that refer to the same open file description
作为 Linux设备驱动程序开发人员,我认为文件对象是每个进程的本地结构,并且其地址在fd表中可用于相应的fd.但当我在Michale Kerrisk的Linux编程界面中遇到5.6节时说明了这一点

Two different file descriptors that refer to the same open file description share
a file offset value. Therefore,if the file offset is changed via one file descriptor
(as a consequence of calls to read(),write(),or lseek()),this change is visible
through the other file descriptor. This applies both when the two file descrip
tors belong to the same process and when they belong to different processes.

我被迷惑了…请帮助我提高理解力.

解决方法

每个进程都有自己的文件描述符表,每次打开文件()时都会生成一个单独的文件描述.那里有理智!

例外情况是文件描述符在进程内(通过dup())或跨进程(通过一个进程fork()使用所有相同的FD复制,或者通过UNIX域套接字传递文件描述符) ).当发生这种情况时,两个描述符最终会彼此共享一些属性,包括偏移量.

这不一定是坏事.例如,这意味着两个写入共享文件描述符的进程最终都不会覆盖彼此的输出.但它有时会产生意想不到的结果.但是,如果不了解它,通常不会出现这种情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读