Ситуация такова: два процесса p1 и p2. p1 создает fifo1 и fifo2 и открывает их на чтение и запись, соответственно. p2 открывает fifo2 и fifo1 на чтение и запись. Проблема такая: p1 создал оба fifo. открывает fifo1 на чтение и "засыпает" на syscall open(), точнее ждет, пока кто-нибудь не откроет fifo1 на запись... p2 открыл fifo1 на запись. p1 открывает на запись fifo2 и опять "засыпает" на системном вызове open(). Можно ли сделать так, что бы p1 не "засыпал" на open()? А вот на вызовах read() и write() пусть ожидает записи-чтения в канал. fifo создавались так: mkfifo(FIFO_REQ_NAME, FIFO_MODE); где FIFO_MODE: #define FIFO_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) открывались так: infile = fopen(ifname, "r"); outfile = fopen(ofname, "w"); пробывал и так: int fd = open(ifname, O_RDONLY); и так: int fd = open(ifname, O_RDONLY|O_NDELAY); пробывал игнорировать сигнал SIGPIPE: signal (SIGPIPE, SIG_IGN); Может кто подскажет, как тут быть?