少し問題があります。/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 (No such device or address) が常に 1 つしかありません。
このコードを Linux と Mac OS X でテストしたところ、すべて問題なく動作しましたが、Solaris では...
どうすればいいのかわからない。