/* * Exemplo 0: FUTEX_WAIT */ #define _GNU_SOURCE #include #include #include #include #include #include "myfutex.h" int futex_addr; void trata_SIGALRM(int signum) { printf("Alarme recebido.\n"); } void trata_SIGTERM(int signum) { printf("SIGTERM recebido. Processo não terminado. \n"); } int main() { futex_addr = 0; signal(SIGALRM, trata_SIGALRM); signal(SIGTERM, trata_SIGTERM); printf("Pid = %d\n", getpid()); futex_wait(&futex_addr, 1); /* EWOULDBLOCK */ alarm(1); futex_wait(&futex_addr, 0); /* EINTR ? */ futex_wait(&futex_addr, 0); return 0; /* Nunca alcançado. */ }