如何将文件 IO 从文件映射到现有设备?

如何将文件 IO 从文件映射到现有设备?

正如标题所问,II如何将文件IO从文件映射到现有设备?

我在其中一台运行 Linux 的常见 SoC 单板计算机上使用高级编程语言。该语言有一个库来访问串行端口以发送 TX 和接收 RX 数据。该库访问 /dev/ttyAMA0 进行读取和写入,但不幸的是,当您创建 Serial 对象时,它是通过使用独占访问权限打开 /dev/ttyAMA0 来实现的,拒绝其他进程甚至 Serial 对象的其他实例使用 /dev/ttyAMA0 。

就我而言,我想编写两个单独的程序。一个程序写入串行端口 TX,另一个程序从串行端口 RX 读取,但该库不允许这样做,因为它使用独占访问打开 /dev/ttyAMA0。我认为使用 Linux 应该可以创建第二个甚至第三个文件,该文件将充当伪终端或其他东西,并进行任何读取或写入,并将所有 IO 访问映射到 /dev/ttyAMA0。

所以我的问题是,如何在 Linux 上创建一个文件(或伪 tty),将所有读取和写入映射到 /dev/ttyAMA0 等设备?

答案1

假设/dev/ttyAMA0是一个设备节点,您可能会创建具有相同主/次编号的其他节点,这些节点将映射到同一设备。

例如,要对 执行此操作/dev/zero,请找出主要和次要编号:

carbon# ls -l /dev/zero 
crw-rw-rw- 1 root root 1, 5 May 29 02:16 /dev/zero

主设备号为 1,次设备号为 5,设备为字符 1。

创建另一个具有相同参数的设备节点,可能是 root:

mknod /dev/zero-dup c 1 5

现在您可以将/dev/zero-dup其用作/dev/zero.

相关内容