LINUX.ORG.RU

C++ читать перенаправленный поток

 


0

1

Всем привет!
Не знаю, как корректнее обозвать тему.
Подскажите, куда копать: хочу, чтобы прога понимала перенаправленные сообщения.

консоль 1:
#./my_programm &
#"started"

консоль 2:
#./my_programm <<"command 1"
#"command 1 processed" (тут не обязательно)

консоль 1:
#"command 1 processed"

и в самой проге прочитать это сообщение (ну и обработать).

Смысл - менять параметры работы «на лету». Посмотрел в сторону pipe, но не уверен, что оно подойдет для этих целей. Возможно, плохо смотрел.

ЯННП.

Ты хочешь запустить программу, и потом передавать запущенной программе команды?

tailgunner ★★★★★
()
Ответ на: комментарий от no-such-file

Хотя сокеты универсальнее, с пайпами начать будет проще.

elijah_sd
()

Ты со второй консоли запускаешь второй экземпляр процесса, это так задумано? Выглядит странно. Если говорить о pipe (я имею в виду заранее созданный и именованый), это могло бы выглядеть так:

#./my_programm & #«started»

консоль 2: #echo «command 1» > /var/run/my_pipe #

консоль 1: #«command 1 processed»

Но как бы там ни было, если собираешься использовать пайпы, сокеты, придется использовать отдельные потоки для их обработки, с сигналами проще чуть-чуть, но синхронизация тоже понадобится. А судя по вопросу, тебе еще предстоит это почитать. Я прав? :-)

elijah_sd
()
Ответ на: комментарий от no-such-file

используй сокеты

Пора уже бить по рукам за сокеты. Будешь выпендриваться, буду резать бритвой... Оккама.

2ТС: pipe наше всьо!

ziemin ★★
()
Ответ на: комментарий от ziemin

А если человек пишет демон которым понадобится управлять удаленно? А если это кросплатформенное решение, которое надо будет запускать под оффтопиком?

Не надо по рукам бить. :-)

elijah_sd
()
Ответ на: комментарий от elijah_sd

А если это кросплатформенное решение, которое надо будет запускать под оффтопиком?

Сокеты более кросплатформенное решение, чем пайпы? Вот те раз. А мужики-то не знают!

Про трудоёмкость я вообще молчу.

ziemin ★★
()
Последнее исправление: ziemin (всего исправлений: 1)
Ответ на: комментарий от ziemin

Про трудоёмкость я вообще молчу.

А в чём трудоёмкость? Библиотек для сокетов навалом, с готовым запуском сервера xmlrpc или, там, http, в пол-пинка. Зачем колхозить что-то на пайпах, если можно нахаляву получить сетевую прозрачность и стандартный протокол управления?

no-such-file ★★★★★
()
Ответ на: комментарий от ziemin

Хм, каюсь, под оффтопик не писал лет 10 наверное, таки можно и с пайпами, но!.. разница в апи огромная, в то время как разница работы с сокетами минимальная, а это именно то, что я и имел в виду.

elijah_sd
()
Ответ на: комментарий от no-such-file

Библиотек для сокетов навалом, с готовым запуском сервера xmlrpc или, там, http, в пол-пинка.

А для FIFO и библиотек не нужно.

tailgunner ★★★★★
()
Ответ на: комментарий от elijah_sd

Делай модульно. Объект-поток. Реализуешь потом хоть квантовый телепортатор.

А ещё есть традиция перечитывать конфиг по USR1.

ziemin ★★
()
Последнее исправление: ziemin (всего исправлений: 1)
Ответ на: комментарий от ziemin

Сетевые задержки тоже библиотеки будут обрабатывать?

При чём тут какие-то задержки? Ну какая там задержка на localhost, у меня ~50мкс. Это что, ограничивающий фактор?

Опять же: ты статически собрался линковать?

А для пайпа ты через системные вызовы собрался дергать? Сокеты тоже так можно.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

При чём тут какие-то задержки? Ну какая там задержка на localhost, у меня ~50мкс.

Дальше мог бы и не продолжать.

ziemin ★★
()
Ответ на: комментарий от no-such-file

http или xmlrpc

Откуда взялась необходимость этих достойных протоколов - из твоих фантазий?

tailgunner ★★★★★
()
Ответ на: комментарий от no-such-file

Да, собственно на твой тупой вопрос вообще можно было не отвечать.

Если ты чего-то не понимаешь это не значит, что все вокруг дураки. Это значит, что ты дурак.

ziemin ★★
()
Ответ на: комментарий от ziemin

Между тем, этот персонаж не раз был замечен за раздачей дельных советов.

Столько звёзд и не знаешь что такое pipe

А 2 звезды устороят? Объясни мне про пайпы, особенно в контексте старт поста темы

Stil ★★★★★
()

cin

http://www.cplusplus.com/reference/iostream/cin/

(или fread(3) из /dev/stdin, если не любишь STL)

Посмотрел в сторону pipe, но не уверен, что оно подойдет для этих целей. Возможно, плохо смотрел.

#./my_programm <<«command 1»

а это что по твоему? Хотя ИМХО более разумно написать echo 'command 1' | ./my_prog

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.