Linux 如何知道哪个ttyS*文件链接到哪个串行端口?

Linux 如何知道哪个ttyS*文件链接到哪个串行端口?,linux,serial-port,Linux,Serial Port,我不是Linux或串行编程专家,我对Linux串行端口通信的理解是:系统将某些/dev/ttyS*文件链接到某个物理串行端口,然后系统或其他过程可以通过/dev/ttyS*文件与连接到该串行端口的任何设备进行通信。无论是否连接了任何设备,/dev/ttyS*文件都会被分配/链接到串行端口 如果我对这一点的理解是正确的,那么在C语言中,是否有任何方法可以获取所有链接到物理串行端口的/dev/ttyS*文件 已经在谷歌搜索过了,所以,没有找到真正有用的东西,请停止 另外,我可以通过以下方式找到此类文

我不是Linux或串行编程专家,我对Linux串行端口通信的理解是:系统将某些/dev/ttyS*文件链接到某个物理串行端口,然后系统或其他过程可以通过/dev/ttyS*文件与连接到该串行端口的任何设备进行通信。无论是否连接了任何设备,/dev/ttyS*文件都会被分配/链接到串行端口

如果我对这一点的理解是正确的,那么在C语言中,是否有任何方法可以获取所有链接到物理串行端口的/dev/ttyS*文件

已经在谷歌搜索过了,所以,没有找到真正有用的东西,请停止

另外,我可以通过以下方式找到此类文件:

dmesg | grep ttyS

但是我需要一种更精确的方法来获取这些信息,像libudev这样的东西可以做到这一点吗?

我不太确定这里要问什么,但是/dev/ttyS*的映射方式多年来没有改变,第一个串行端口,有时被称为DOS名称COM1,仍然可以作为
/dev/ttyS0
访问,第二个是
/dev/ttyS1
,依此类推

从内核文档,即从文件
documentation/devices.txt
中,您仍然可以找到一些有用的信息:

4 char        TTY devices
              0 = /dev/tty0         Current virtual console

              1 = /dev/tty1         First virtual console
                ...
             63 = /dev/tty63        63rd virtual console
             64 = /dev/ttyS0        First UART serial port
                ...
            255 = /dev/ttyS191      192nd UART serial port

            UART serial ports refer to 8250/16450/16550 series devices.

如果您对如何查找系统上的所有串行端口有疑问,请参阅
/dev/serial
,其中应包含(除非您使用的是非常古老的内核)按id和uuid的条目。

嗯,这些ttyS*文件始终存在于/dev/文件夹下,对吗?可能有几十个。但在我的主板上,可能只有一个物理串行端口,所以我的问题是,这些ttyS*文件中的哪一个正是我可以与物理串行端口通信的文件,系统会自动将一个物理串行端口映射为一个ttyS*文件,对吗@但是,在/dev/serial中,只有那些实际存在的节点才会有udev节点。酷!但是我找不到/dev/serial文件夹,在/dev中没有名为“serial”的文件夹,甚至没有一个接近的文件夹。我使用的是CentOS 6.4 x64,我应该看看其他地方吗@萨米·莱恩