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.