0

我有一个小问题。我使用串行端口,例如 /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 中......

我不知道该怎么办。

4

0 回答 0