#include #include #include #include int up(void) { message m; if (_syscall(SS_PROC_NR, SS_UP, &m) < 0) return(-1); return 0; } int down(void) { message m; if (_syscall(SS_PROC_NR, SS_DOWN, &m) < 0) return(-1); return 0; } int main(void) { /* grazie al semaforo, il padre stampa sempre prima del figlio */ int r=0; if (fork() > 0){ /* padre */ sleep(10); printf("Sono il padre\n"); r = up(); if (r<0) printf("Errore p:%d\n", r); return 0; } else { /* figlio */ r = down(); if (r<0) printf("Errore f:%d\n", r); printf("Sono il figlio\n"); return 0; } }