summaryrefslogtreecommitdiffstats
path: root/vt_reset.c
blob: 139ab0bb9252be0778f5ce0c84b8783c25cb567d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/vt.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>


main (int argc, char *argv[])
{
  int fd;
  int i;
  char buf[128];
  struct vt_mode vm;

  for (i = 1; i < 31; ++i) {
      sprintf (buf, "/dev/tty%d", i);
      fd = open (buf, O_RDWR | O_NOCTTY);

      memset (&vm, 0, sizeof (vm));
      vm.mode = VT_PROCESS;
      ioctl (fd, VT_SETMODE, &vm);
      ioctl (fd, VT_RELDISP, 0);
      ioctl (fd, VT_RELDISP, 1);
      ioctl (fd, VT_RELDISP, VT_ACKACQ);

      memset (&vm, 0, sizeof (vm));
      vm.mode = VT_AUTO;
      ioctl (fd, VT_SETMODE, &vm);

      ioctl (fd, VT_UNLOCKSWITCH, 0);

      close (fd);
  }
  exit (0);
}