7.6.3 Le FIFO

GNU/Linux supporta anche le named pipe (pipe con nome) dette anche FIFO, poiché esse operano come delle code, ovvero sono gestite in maniera tale che il primo dato inserito in esse è anche quello che viene considerato (estratto) per primo (First In, First Out). Una FIFO è analoga ad una pipe semplice, con la differenza che ad essa è associato un inode sul filesystem. Questo permette ai processi di poterle utilizzare anche senza avere un processo progenitore comune, che invece è necessario per l’utilizzo delle pipe semplici. Le informazioni scambiate tra i processi che utilizzano una FIFO, apssano attraverso un buffer interno al kernel, senza transitare sul filesystem: l’inode associato sul filesystem serve soltanto come riferimento ai processi per l’accesso alla FIFO.

Per ogni FIFO aperta, il kernel mantiene una pipe. Una FIFO deve essere aperta sia in scrittura che in lettura affinché i dati possano transitare attraverso di essa. In genere l’apertura di una FIFO (in modalità di lettura o scrittura) rimane bloccata fintantoché essa non viene aperta nella modalità complementare (scrittura o lettura). Un processo può comunque aprire una FIFO in modalità non bloccante e nel caso la FIFO non sia già aperta nella modalità complementare a quella desiderata dal processo, il processo stesso riceve un segnale SIGPIPE.