Pipe
Um pipe pode ser considerado um canal de comunicação que liga dois processos e permite um fluxo de informação unidireccional (half-duplex).
Um pipe é representado por um array de inteiros de duas posições (posição 0 - Leitura ; posição 1 - Escrita).
Quando se cria um pipe, o sistema retorna, para o processo que chamou o serviço de criação, dois descritores que representam o lado de escrita no pipe e o lado de leitura no pipe. Inicialmente esses descritores pertencem ambos a um processo. Quando esse processo lança posteriormente um filho este herdará esses descritores (herda todos os ficheiros abertos) ficando assim pronto o canal de comunicação entre os dois processos.
Observações:
O pipe funciona como uma estrutura FIFO (First In First Out).
Nas funções read, write e close, o pode indicar um canal de saída ou de entrada de um pipe.
Se o é um canal de entrada de um pipe, e for efetuada uma leitura (read), podem acontecer duas situações:
O pipe está vazio, originando o bloqueamento do processo até que seja possível efetuar o read.
O pipe não está vazio, sendo possível efetuar o read. Se forem lidos n bytes, então os primeiros n bytes do pipe são removidos ou seja há uma transferência)
Pipes com nome ou FIFOs
Os FIFOs são por vezes chamados pipes com nome e podem ser utilizados para estabelecer canais de comunicação entre processos não relacionados ao contrário dos pipes, que exigem sempre um ascendente comum entre os processos que ligam. Quando se cria um FIFO o seu nome aparece no diretório especificado no sistema de ficheiros