質問
Linux では、マスター側で疑似 tty を開いています。スレーブ側にはクライアントがありませんが、擬似 tty は私が彼に書いていることすべてをエコーしているようですが、これは私が期待しているものではありません。次のコードを考えてみましょう。
int main(int argc, char * argv[])
{
int ptyfd;
int rc; /* return code */
char readbuf[3];
ptyfd = open("/dev/ptmx", O_RDWR | O_NOCTTY);
die_on_error(ptyfd, "open ptmx");
/* unlock and print slave name */
rc = unlockpt(ptyfd);
die_on_error(rc, "unlockpt");
printf("Slave pts name : %s\n", ptsname(ptyfd));
write(ptyfd, "C", 1);
rc=read(ptyfd, readbuf, 1);
die_on_error(rc, "read");
printf("read returned %c\n",readbuf[0]);
return 0;
}
このプログラムを実行すると、読み取り呼び出しがブロックされることが予想されますが、代わりにすぐに戻り、readbuf の内容は C になります。この動作を変更するにはどうすればよいですか?スレーブ側が開かれていないときは、マスター側に書いた文字を消すか、後でスレーブ側で読み取れるようにFIFOしてほしいです。
マスター側の属性を変更するのは正しい方法ですか?
解決
あなたはtcgettattr
とtcsetattr
のようなものを呼び出して、エコーを抑制することができるので、私はマスター側がttyではないと思ったが、どうやらそれはあります。
他のヒント
ブロッキングを使用できます getch()
電話。また getch()
コンテンツはエコーされません。
所属していません StackOverflow