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
,也挂起。