Там нет ничего магического трубопровода к вашей программе он просто превращает ваш cin
чтение из потока вместо пользовательского ввода с консоли: Linux terminal pipe to my C++ program
Простой взгляд на историю изменений на этот вопрос покажет, что этот вопрос имеет очень улучшились с его оригинальной версией, благодаря Konrad Rudolph (. с другой отвечающего по этому вопросу) в ходе дальнейшей dastardliness я собираюсь скрести 2 своих решения для прихлебывая поток в string
:
istreambuf_iterator
method:
const string mkfifo{ istreambuf_iterator<char>(cin), istreambuf_iterator<char>() };
stringbuf
copy method:
istringstream temp;
temp << cin.rdbuf();
const auto mkfifo = temp.str();
Вы можете прочитать о преимуществах и недостатках каждого из них на своих постах. Чтобы использовать этот код, сказать, что ваша скомпилированная программа называется main
вы бы труба к нему так:
mkfifo named_pipe
echo "lorem ipsum" > named_pipe
./main named_pipe
фиксированное это :-) 10х – Dani