blocos open () ao tentar abrir o tubo para leitura

Eu tenho dois processos, um servidor e um cliente, que devem se comunicar via pipes (C ++, Linux). O servidor abre o pipe com oO_RDONLY bandeira, e o cliente comO_WRONLY. No entanto, os blocos de servidores noopen função, enquanto o cliente parece executar com sucesso (oopen função retorna sucesso e por isso owrite funções).

Eu li que se oO_NONBLOCK flag está definido, a função de leitura continuará, mas não quero que continue se nenhum cliente estiver conectado - não há problema em bloquearaté que um cliente esteja conectadomas no meu caso ele fica bloqueado mesmo depois que o cliente termina de rodar ...

Você pode me dizer o que estou fazendo errado ...?

Aqui está o código:

// Server side
int pipe;
int status, nr_read = 0;

status = mkfifo(FIFO_NAME, 0666);
if (status < 0)
{
    // If the file already exists, delete it
    unlink(FIFO_NAME);

    // Try again
    status = mkfifo(FIFO_NAME, 0666);

    if(status < 0)
    {
        printf("mkfifo error: %d\n", status);
        return status;
    }
}

pipe = open(FIFO_NAME, O_RDONLY);
printf("Never gets here...\n");
[...]
nr_read = read(pipe, my_char_array, CHAR_ARRAY_SIZE);
[...]
close(pipe);
unlink(FIFO_NAME);

Nunca chega à linha "printf" ...

// Client side:
int pipe, nr_sent = 0;
int status = 0;

pipe = open(FIFO_NAME, O_WRONLY);
if (pipe < 0)
{
    printf("open fifo error: %d\n", status);
    return pipe;
}

[...]
nr_sent = write(pipe, my_char_array, CHAR_ARRAY_LENGTH);
[...]
close(pipe);

EDITAR

Não mencionei a linha#define FIFO_NAME "MYFIFO"

... e aqui estava o problema: como Jody Hagins disse, o caminho sendo relativo e os processos sendo iniciados a partir de pastas diferentes, eles estavam tentando abrir arquivos diferentes.

questionAnswers(1)

yourAnswerToTheQuestion