2013-12-21 29 views
0

包括

让我们假设,这是我运行的代码:管道输入到已经运行的cpp程序?

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 "blah blah blah" | ./myProgram

所以我的目标是有两个单独的步骤。一个我开始我的程序,另一个当我管它的一些输入使用

+0

你居然回答了你自己的问题;你需要一个管道,以便使用** ** mkfifo并在后台运行它 - 你的程序链接到它后来提供您输入管道创建使用mkfifo ---->这已经是由csreap3r –

回答

1

我想你可以用命名管道做到这一点。

mkfifo mypipe 
./myProgram < mypipe & 
cat file1.txt file2.txt file3.txt > mypipe 
+0

谢谢!正是我需要的。 – CM0491

+0

没问题。很高兴我能帮上忙! – csnate

+0

所以这个确实有效,但是一旦myProgram到达管道数据的末尾,它就会停止阅读。所以这似乎是一次性交易。有没有办法让这个工作不需要每次重启程序?这将是很好,如果我可以连续捕捉7或8个不同的文件到管道中,并让它们全部被程序处理 – CM0491

0

您可以使用mkfifo,并从程序中的普通文件中读取。

还有

  • pipesocket_pair(双向)
+0

'pipe'回答'socketpair'在这里没有帮助。 – Duck