# include # include # include #define TTYPATH "/dev" #define MAX(A,B) ((A) > (B) ? (A) : (B)) static char *console_devices[] = { #ifdef HAVE_DEV_CONSOLE "console", #endif #ifdef HAVE_DEV_KBD "kbd", #endif #ifdef HAVE_DEV_KEYBOARD "keyboard", #endif #ifdef HAVE_DEV_MOUSE "mouse", #endif #ifdef HAVE_DEV_SMF "smf", #endif NULL }; main (argc,argv) int argc; char *argv[]; { char device[20]; struct stat stats,stats_mouse,stats_kbd; time_t access_time; time_t current_time; time_t kbd_idle,mouse_idle; char tty[20]; if (argc==2)strcpy(tty,argv[1]); for (;;) { current_time = time ((time_t *)0); if (argc ==2) { sprintf (device, "%s/%s", TTYPATH, tty); if (lstat (device, &stats) == -1 || (stats.st_mode & S_IFMT) == S_IFLNK) access_time=time(NULL); else access_time = stats.st_atime; } if (lstat ("/dev/kbd", &stats_kbd) == -1 || (stats_kbd.st_mode & S_IFMT) == S_IFLNK) kbd_idle=time(NULL); else kbd_idle = stats_kbd.st_atime; if(argc==2) printf("Idle tty :%d sec\n",current_time - access_time ); printf("Idle Keyboard or mouse:%d sec\n",current_time - kbd_idle); sleep(1); } }