我有一个关于 Linux 串行端口的问题正在尝试解决。我可以很好地打开、读取和关闭端口。但是,我想确保我是在任何给定时间从端口读取/写入的唯一人。
在我调用 open() 函数后,我认为这已经为我完成了。但是,我可以在程序的同一个端口上多次调用 open()。我也可以有两个线程同时从同一个端口读取。
我尝试用flock() 解决这个问题,但我仍然遇到同样的问题。是因为两个系统调用都来自同一个 pid,即使每组打开和读取都涉及不同的文件描述符?作为记录,两个 open() 调用都返回一个有效的文件描述符。
结果,我想知道是否有任何方法可以解决问题。从我的程序的角度来看,如果对 open() 的两次调用在同一个端口上成功,这没什么大不了的,因为程序员应该知道它们引起的欢闹。但是,我只想确保当我打开一个端口时,我是唯一可以访问它的进程。
谢谢您的帮助。