If you don't pass the flag O_NONBLOCKon open(2), open the FIFO blocks until the other end opens. From man 7 fifo:
FIFO must be open at both ends (read and write) before data can be transferred. Usually, opening FIFO blocks to the other end also opens.
FIFO . , ENXIO ( ), .
, / FIFO. , unlink(2), FIFO. , FIFO , unlink(2).
unlink(2): unlink(2) ; (FIFO ), . , , . FWIW, , , , .
() :
wait(2) . ( ), - .mkfifo(3), fork(2), open(2), read(2), write(2), close(2) unlink(2) -1. , . perror(3) .- , , : , , (
pipe(2) forking, ).