如何使用 Posix/C 函数检查 Linux 中的串行端口是否已打开?我想检查串口的状态来检查串口是否打开。
我想知道哪些方法适用于:
检查文件描述符以查看串行端口是否打开以及
检查串口文件名,查看串口是否打开,下例中为“/dev/ttyUSB0”
——
// This code is for example purposes only
int open_port()
{
int fd;
fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd < 0)
{
perror("open_port: Unable to open /dev/ttyf1 - ");
}
return fd;
}
Run Code Online (Sandbox Code Playgroud)
我想有一种“标准”的方式来做到这一点,这就是我想要达到的。
我有一个问题,我正试图解决Linux中的串口问题.我能够打开,读取和关闭端口就好了.但是,我想确保我是唯一一个在任何时候从港口读/写的人.
在我进行open()函数调用之后,我认为这已经为我完成了.但是,我可以在程序的同一个端口上多次调用open().我也可以有两个线程同时从同一个端口读取.
我尝试用flock()解决这个问题,但我仍然遇到了同样的问题.是因为两个系统调用都来自同一个pid,即使每组打开和读取都涉及不同的文件描述符?对于记录,两个open()调用都返回有效的文件描述符.
结果,我想知道是否有任何方法可以解决问题.从我的程序的角度来看,如果两次调用open()在同一个端口上成功,那么这并不是什么大问题,因为程序员应该知道它们造成的欢闹.但是,我只想确保当我打开一个端口时,我是唯一可以访问它的进程.
谢谢您的帮助.