それとも、何らかのプロセスまたは何かが仮想端末をブロックする可能性はありますか? または、VT1 にアクセスしようとしたときにアプリケーションがハングする理由は何でしょうか?
それが起こっている間、関数にぶら下がっているようioctl
です。特に、これは失敗するコードです:
int vtno = 1;
const char* vtname = "/dev/tty1";
int fd = open(vtname, O_RDWR|O_NDELAY, 0);
if (ioctl(fd, VT_ACTIVATE, vtno) < 0)
printf("VT_ACTIVATE failed: %s\n", strerror(errno));
if (ioctl(fd, VT_WAITACTIVE, vtno) < 0)
printf("VT_WAITACTIVE failed: %s\n", strerror(errno));
2 番目にハングしますioctl
。中断すると、次のメッセージが表示されます。
VT_WAITACTIVE failed: Interrupted system call
また、そこで待機している間に、chvt 1
別の端末から a を実行すると、それもハングします。