2015-09-28 3 views
0

Я работаю с такой трубкой (скрипт bash). Я пишу в одной трубе $server и читаю с другой трубы $serverPID. Это клиент пример код:Не удалось получить данные от fifo

echo "Get var" 
mkfifo "${server}$$" 
echo "$$ 2" > $server 
read var < "${server}$$" 
echo "var: ${var}" 

Это пример сервера код:

int fd; 
if ((fd = open(fifo, O_RDWR)) == -1) { 
    fprintf(stderr, "Could not open fifo"); 
} 

ssize_t written; 

written = write(fd, buf, strlen(buf)); 
if (written == -1) { 
    fprintf(stderr, "Could not write into fifo");       
} 
printf("written %d into %s\n", written, fifo); 

Я вижу, что все данные были записаны успешно, но я получаю ожидание на стороне клиента без появления письменных данных. В чем проблема?

+0

добавляю «&» в клиенте, но не получить никакого результата. Я получаю результат, если я завершаю только сервер –

+0

Вы пишете файл в клиенте, а не в fifo. Вы имели в виду 'echo '$$ 2"> "$ server $$" '? – chepner

ответ

0

Добавление close(fd) решить проблему

+0

Вы также можете сделать 'fflush (fifo)'. – Barmar

 Смежные вопросы

  • Нет связанных вопросов^_^