Regra # 1: Leia a man page para tudo que você faz.
Regra # 2: Em caso de dúvida, faça ls -la
.
Regra nº 3: ao depurar um programa, imprima todas as variáveis.
Regra # 3a: não anunciar que algo foi bem sucedido sem primeiro verificar se realmente foi bem sucedido.
O segundo argumento para mkfifo
é o modo .
Você está criando um modo FIFO com (permissões) 0; ou seja, p---------
.
Portanto, o open
está falhando com um erro EACCESS e retornando -1
para fd
.
E gravar em um descritor de arquivo -1
está falhando com um erro EINVAL.