Eu descobri que se eu transferir uma grande quantidade de dados entre dois processos via pipe, algum arquivo temporário será criado pelo linux no diretório / tmp. Se a operação do pipe for bem-sucedida, o arquivo temporário correspondente será removido automaticamente pelo SO. Mas se a operação falhar, o arquivo tmp permanece lá.
Por alguma razão, não quero que o usuário tenha a oportunidade de obter os dados que transferi através do canal, por isso não quero nada no disco rígido, mesmo que o meu programa tenha travado. Como posso fazer isso?
sender > filename
then receiver < filename
. Eu verificaria o arquivo tmp durante as duas operações, para ver se o remetente ou o destinatário está fazendo isso.
mkfifo
canal criado nunca faz buffer (de todo!) E nunca cria arquivos.