我有一个小问题。我使用串行端口,例如 /dev/term/0 并且我需要锁定对该设备的多次访问。为此,我使用以下代码:
int hComm;
hComm = open(portName, O_RDWR | O_NOCTTY | O_NDELAY);
if(hComm != -1){
ioctl(hComm, TIOCEXCL, NULL);
int flags = fcntl(hComm, F_GETFL, 0);
flags &= ~O_NDELAY;
fcntl(hComm, F_SETFL, flags);
}
一切正常。然后我运行另一个应用程序并尝试打开这个端口,我有错误 EBUSY - 没关系,但此时我的第一个应用程序停止工作。我不能读/写和关闭这个端口,我总是只有一个错误 ENXIO(没有这样的设备或地址)。
我已经在 Linux 和 Mac OS X 中测试了这段代码,并且所有的工作都没有任何问题,但是在 Solaris 中......
我不知道该怎么办。