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

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

概述作为 Linux设备驱动程序开发人员,我认为文件对象是每个进程的本地结构,并且其地址在fd表中可用于相应的fd.但当我在Michale Kerrisk的Linux编程界面中遇到5.6节时说明了这一点 Two different file descriptors that refer to the same open file description share a file offset valu 作为 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域套接字传递文件描述符) ).当发生这种情况时,两个描述符最终会彼此共享一些属性,包括偏移量.

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

总结

以上是内存溢出为你收集整理的linux – 每个进程或系统范围内的文件对象是本地的吗?全部内容,希望文章能够帮你解决linux – 每个进程或系统范围内的文件对象是本地的吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1018876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存