Или вообще возможно, что какой-то процесс или что-то еще может заблокировать виртуальный терминал?Или в чем может быть причина того, что приложение зависает при попытке доступа к 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
с другого терминала, он также зависает.