Home
bsleep.c - bsleep - breakable sleep HTML git clone git://kroovy.de/bsleep DIR Log DIR Files DIR Refs DIR README DIR LICENSE --- bsleep.c (612B) --- 1 #define _POSIX_SOURCE 2 #include <signal.h> 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <sys/mman.h> 6 #include <unistd.h> 7 8 int 9 main(void) 10 { 11 int i; 12 char *shmem = mmap(NULL, sizeof(char), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); 13 pid_t pid = fork(); 14 15 if (pid == 0) { 16 /* CHILD */ 17 for (i=1;;i++) { 18 printf("\r[ press 'b' to interrupt: %ds ] [ '%c' was pressed ] ", i, *shmem); fflush(stdout); 19 sleep(1); 20 } 21 } else { 22 /* PARENT */ 23 system("/bin/stty raw -echo"); 24 while ((*shmem = getchar()) != 'b'); 25 kill(pid, SIGKILL); 26 system("/bin/stty cooked echo"); 27 printf("\n"); 28 } 29 }