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