INTRODUZIONE ALLA PROGRAMMAZIONE IN C



pipe()/Piping di basso livello



int pipe(int fd[2]) - crea una pipe e ritorna due file descrittori, fd[0] e fd[1]. fd[0] e' aperto per la lettura, fd[1] per la scrittura. pipe() ritorna 0 in caso di successo, -1 in caso di fallimento e di conseguenza setta errno. Il modello standard di programmazione prevede che, dopo la creazione della pipe, due o piu' processi che cooperano verranno creati da una fork ed i dati verranno passati mediante l'utilizzo di read() e write(). Le pipe aperte con pipe() dovranno essere chiuse con "close (int fd)". Esempio: il processo padre invia delle write al processo figlio int pdes[2]; pipe(pdes); if (fork == 0) { /* processo figlio */ close(pdes[1]); /* non richiesto */ read(pdes[0]); /* legge dal processo padre */ ... } else { close(pdes[0]); /* non richiesto */ write(pdes[1]); /* scrive al processo figlio */ ... }