【发布时间】:2010-09-02 12:11:05
【问题描述】:
或者是否有可能某些进程或其他东西可能会阻塞虚拟终端?或者应用程序在尝试访问 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));
它挂在第二个ioctl。当我打断它时,我会收到以下消息:
VT_WAITACTIVE failed: Interrupted system call
另外,当它在那里等待时,如果我从另一个终端执行chvt 1,它也会挂起。
【问题讨论】: