TIOCEXCL в Солярисе - PullRequest
       12

TIOCEXCL в Солярисе

0 голосов
/ 20 декабря 2011

У меня маленькая проблема. Я работаю с последовательным портом, например / 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 ...

Я не знаю, что делать.

...