/* * Implementação simples do comando sleep. Funciona sempre? */ #include #include #include #include void trata_SIGALRM(int signum) { printf("Recebi SIGALRM.\n"); } int mysleep(int nseg) { sigset_t so_alarme, mascara; signal(SIGALRM, trata_SIGALRM); sigfillset(&so_alarme); sigdelset(&so_alarme, SIGALRM); sigdelset(&so_alarme, SIGINT); sigprocmask (SIG_SETMASK, &so_alarme, &mascara); alarm(nseg); pause(); sigprocmask (SIG_SETMASK, &mascara, NULL); return 0; } int main(int argc, char* argv[]) { int nseg; if (argc == 1) nseg = 1; else nseg = atoi(argv[1]); if (nseg > 0) mysleep(nseg); return 0; }