正如标题所问,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
.