我试图将一个可执行文件生成的输出作为输入传递给另一个。我能够一次发送一行。
问题是当我尝试从Program1发送'while循环中生成的行序列'时,将被Program2读取为输入。我尝试在终端中管道可执行文件(如下所示),但它无法正常工作。
./Program1 | ./Program2
./Program1 |xargs ./Program2
./Program1 > ./Program2
我想避免文件I / O.
注意: 平台: Linux
==================
以下示例的内容
Program1(写入终端)
int main(int argc, char *argv[])
{
int i = 2200;
while(1){
printf("%d \n", i);
i++;
}
}
Program2(从终端读取,Program1的输出)
int main(int argc, char *argv[])
{
while(1){
// Read 'i' values
cout << "There are " << argc << " arguments:" << endl;
// Loop through each argument and print its number and value
for (int nArg=0; nArg < argc; nArg++)
cout << nArg << " " << argv[nArg] << endl;
}
return 0;
}
答案 0 :(得分:5)
问题是您正在尝试阅读程序参数。但是当您从一个程序管道到下一个程序时,第一个程序的输出变为第二个程序的标准输入(std::cin
)。
尝试使用程序2:
#include <string>
#include <iostream>
int main()
{
std::string line;
while(std::getline(std::cin, line)) // read from std::cin
{
// show that it arrived
std::cout << "Line Received: " << line << '\n';
}
}