4
還是有可能一些進程或其他東西可以阻止虛擬終端?或者當嘗試訪問VT1時應用程序掛起的原因是什麼?什麼可能的原因可能會阻塞Linux上的虛擬終端?
看來,雖然這是發生,它掛在功能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));
它掛在第二個ioctl
。當我打斷它,我得到這個消息:
VT_WAITACTIVE failed: Interrupted system call
而且,當它被等候在那裏,如果我從另一個終端做一個chvt 1
,也掛起。