как предотвратить полный сбой dnsmasq при отключении одного из настроенных интерфейсов?

Думаю, с "настоящим" конвейером это невозможно.

Вместо этого вы можете использовать именованный канал FIFO (, см.man mkfifo)или (более элегантный, но более сложный )сокет Unix (AF _UNIX ).

./background-proc </path/to/fifo &
cat >/path/to/fifo
# typing commands into cat

Я не разработчик, поэтому мое отношение к сокетам только socat. Но это может помочь в качестве начала.

Вам нужен "сервер", который взаимодействует с вашей программой. Такой конвейер будет запущен в фоновом режиме :

.
socat UNIX-LISTEN:/tmp/sockettest,fork STDOUT | sed 's/./&_/g'

sedпредназначен только для тестирования.

Затем вы запускаете один или несколько

socat STDIN UNIX-CONNECT:/tmp/sockettest

Если у вас есть программа, которая генерирует команды для вашей фоновой программы, вы также можете использовать здесь конвейер:

cmd_prog | socat STDIN UNIX-CONNECT:/tmp/sockettest

Преимущество по сравнению с FIFO в том, что (с опцией forkна стороне сервера )можно отключать и снова подключать клиента. При использовании FIFO вам потребуются хитрости для поддержания работы принимающей стороны :

.
while true; do cat /path/to/fifo; done | background_prog
2
16.09.2018, 23:33
0 ответов

Теги

Похожие вопросы