【问题标题】:I am able to access /dev/ttyS0 device file in two different processes at same time. Why?我可以同时在两个不同的进程中访问 /dev/ttyS0 设备文件。为什么?
【发布时间】:2014-03-30 09:08:09
【问题描述】:

我读过一些地方,任何设备文件一次只能由一个进程访问。但就我而言,我可以同时通过两个不同的进程访问我的/dev/ttyS0 设备文件。就我而言,我用/dev/ttyS0 打开了minicom,然后我用c 编写了一个程序,它打开同一个文件并尝试从中读取/写入。我可以同时打开两个。为什么会发生在我身上?

【问题讨论】:

  • 为什么不呢?通常,许多进程在任何时候都有一个给定的终端作为 I/O 设备。
  • @JonathanLeffler 你是说终端设备文件和其他设备文件不一样?
  • 否;它们与设备文件相同,并且多个进程可以在任何给定时间打开大多数设备文件。 Unix/Linux 不强制对设备进行独占访问。
  • @JonathanLeffler 您能否详细说明您的评论作为答案?
  • /dev/ttyS0 的情况下,只有一个进程会接收字节,不是吗?因此,/var/lock/LCK..ttyS0 机制用于锁定串行端口。另一方面,似乎多个进程可以打开/dev/input/eventX,并且都接收相同的输入事件。

标签: c linux device


【解决方案1】:

评论转化为答案:

  • 为什么不呢?通常,许多进程在任何时候都有一个给定的终端作为 I/O 设备。

你是说终端设备文件和其他设备文件不一样?

没有;它们与设备文件相同,并且多个进程可以在任何给定时间打开大多数设备文件。 Unix/Linux 不强制对设备进行独占访问。诸如/dev/null 之类的设备文件可以同时被多个进程使用。磁盘设备可以由多个进程打开(尽管通常,您一次只需要一个进程使用任何给定的设备,但某些 DBMS 将有多个进程访问单个磁盘设备)。当一个进程分叉时,两个进程都可以访问同一组文件。

【讨论】:

    猜你喜欢
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多