Может ли кто-нибудь опубликовать простой пример использования именованных каналов в Bash в Linux?Пример использования именованных каналов в Linux Bash
ответ
Один из лучших примеров практического использования именованного канала ...
От http://en.wikipedia.org/wiki/Netcat
Еще одно полезное поведение использует Netcat в качестве прокси-сервера. Оба порта и хоста могут быть перенаправлены. Посмотрите на этом примере:
nc -l 12345 | nc www.google.com 80
порт 12345 представляет собой запрос Это запускает сервер на пс порта 12345 и все соединения попадают в google.com:80. Если веб-браузер делает запрос на nc, запрос будет отправлен в Google, но ответ не будет отправлен в веб-браузер. Это потому, что трубы однонаправлены. Это можно обойти с помощью именованного канала для перенаправления ввода и вывода.
mkfifo backpipe
nc -l 12345 0<backpipe | nc www.google.com 80 1>backpipe
Вот команды:
$ mkfifo named_pipe
$ echo "Hi" > named_pipe &
$ cat named_pipe
Первая команда создает трубу.
Вторая команда записывает в трубу (блокирование). &
помещает это в фоновый режим, поэтому вы можете продолжать вводить команды в одной и той же оболочке. Он выйдет, когда FIFO будет опустошен следующей командой.
Последняя команда считывает из трубы.
Я бы изменил # на $, поэтому его не все прокомментировали (и не запускались как root!) – alternative
Это просто показать, что это приглашение оболочки! – Khaled
Обычно «#» относится к корневому запросу (т. Е. Приглашению в корневой оболочке). Здесь нет ничего, что требовало бы запуска в корневой оболочке. – thomasrutter
Открыть две разные оболочки и оставить их рядом. В обоих случаях, перейдите в каталог/TMP/каталог
cd /tmp/
В первом одного типа:
mkfifo myPipe
echo "IPC_example_between_two_shells">myPipe
Во второй, тип:
while read line; do echo "What has been passed through the pipe is ${line}"; done<myPipe
Первая оболочка не даст вы все запросите назад, пока не выполните вторую часть кода во второй оболочке. Это потому, что чтение и запись fifo блокируют.
Вы также можете посмотреть тип FIFO, выполнив ls -al myPipe
и просмотреть сведения об этом конкретном типе файла.
Следующим шагом было бы ввести код в скрипт! - Надеюсь, поможет.
Можно ли делать блокирующие записи в fifo? – dabicho
- 1. Создание именованных каналов в Java
- 2. Использование именованных каналов с bash - Проблема с потерей данных
- 3. Ограничение именованных читателей каналов
- 4. Отладка именованных каналов в WCF
- 5. Использование именованных каналов в Rails
- 6. Создание именованных каналов в D?
- 7. Настройка считывания трубопроводов из именованных каналов без блокировки в bash
- 8. чтение из именованных каналов в linux vs OS X
- 9. Использование именованных каналов и fork в C/Linux
- 10. простая клиент-серверная программа с использованием именованных каналов в linux
- 11. Чтение/запись из именованных каналов в моно/Linux
- 12. Пример именованных каналов IPC с тайм-аутом чтения/записи
- 13. Поддержка HttpWebRequest для именованных каналов?
- 14. Преимущества именованных каналов над анонимными трубами C++
- 15. Использование именованных каналов в качестве файлов
- 16. Как tee в fd вместо именованных каналов
- 17. Использование именованных каналов в макс для живого
- 18. Что касается поведения именованных каналов в tcl
- 19. Маршрутизация REST для именованных каналов в WCF
- 20. Использование именованных каналов в одном процессе
- 21. Использование именованных каналов для создания «цикла»
- 22. Как предотвратить тупик при использовании именованных каналов?
- 23. Разработка для именованных каналов на XP
- 24. Сериализуемый класс оболочки для именованных каналов транспорта
- 25. Использование именованных каналов асинхронно с StreamWriter
- 26. Соединение SQL Server с использованием именованных каналов
- 27. Чат клиентского сервера с использованием именованных каналов
- 28. Пример использования pwm_get() в ядре linux
- 29. Сокеты против именованных каналов для локального IPC в Windows?
- 30. создать среду чтения/записи с использованием именованных каналов
Любой конкретный язык? – slashmais