医師端末を開いています。開いている機能。これは、シリアルポートの一部のデータを外部アプリケーション(この場合はGPS受信機)にリダイレクトするために使用されます。
問題は時々私amaster ファイル記述子が 0 です。(以下のコードではパラメータは空です。)この場合、リダイレクトは機能せず、外部アプリケーションはデータを受信しません。 0 は正常なので正常であると仮定します。標準入力記述子。
私は何が間違っていましたか? openpty機能を使用してstdinがマスターになるのを防ぐことはできますか?
よろしくお願いします。
bool openPts(char* ptsName, int* mpty, int* spty) {
if (openpty(mpty, spty, ptsName, NULL, NULL) == -1) {
printf("openPts: ERROR openpty [%d] %s",
errno, strerror(errno));
return false;
}
// if (*mpty == 0 || *spty == 0) {
// printf("openPts: ERROR openpty mpty[%d] spty[%d] [%d] %s",
// *mpty, *spty, errno, strerror(errno));
//
// if (*mpty > 0) {
// close(*mpty);
// }
// if (*spty > 0) {
// close(*spty);
// }
// return false;
// }
///////////////////////////////////////////////////////////////////
//Set non-blocking
if (setNonblock(*mpty) == -1) {
printf("openPts: mpty[%d] NONBLOCK ERROR [%d] [%s]",
*mpty, errno, strerror(errno));
}
if (setNonblock(*spty) == -1) {
printf("openPts: spty[%d] NONBLOCK ERROR [%d] [%s]",
*spty, errno, strerror(errno));
}
///////////////////////////////////////////////////////////////////
printf("openPts[%s]: fd MASTER[%d] fd SLAVE[%d]",
ptsName, *mpty, *spty);
return true;
}