Предположим, что это код, который я запускаю:
int main(int argc, char **argv) {
bool running = true;
string lineInput;
while (running)
{
while (cin >> lineInput)
{
cout << lineInput;
}
}
return 0;
}
То, что я хотел бы иметь, это то, что я могу вызвать запуск программы с терминала, набрав "./myProgram". Эта часть довольно проста. Часть, которую я не знаю, как это сделать, это сделать так, чтобы я мог в более поздний момент времени использовать echo "some text to echo" | myProgram
echo "some text to echo" | myProgram
и иметь возможность иметь мою программу, затем распечатать этот текст обратно на терминал.
Сейчас я могу только заставить его работать, если я набираю:
echo "blah blah blah" |./myProgram
Поэтому моя цель - сделать два отдельных шага. Один, где я запускаю свою программу, и секунду, когда я подключаю к нему какой-либо ввод для использования
Я думаю, вы могли бы сделать это с именованным каналом.
mkfifo mypipe
./myProgram < mypipe &
cat file1.txt file2.txt file3.txt > mypipe
Вы можете использовать mkfifo
и просто читать из него в программе, как из обычного файла.
Там также
pipe
или socket_pair
(двунаправленный)pipe
и socketpair
здесь не помогут.