Я работаю с такой трубкой (скрипт 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);
Я вижу, что все данные были записаны успешно, но я получаю ожидание на стороне клиента без появления письменных данных. В чем проблема?
добавляю «&» в клиенте, но не получить никакого результата. Я получаю результат, если я завершаю только сервер –
Вы пишете файл в клиенте, а не в fifo. Вы имели в виду 'echo '$$ 2"> "$ server $$" '? – chepner