'Continuous' 一个可执行文件的 C++ 输出作为另一个程序的输入
'Continuous' C++ output of one executable as Input to another program
我正在尝试将一个可执行文件生成的输出作为输入传递给另一个可执行文件。我已经能够一次发送一行。
问题是当我尝试从 Program1 发送 'sequence of lines generated in a while loop' 以供 Program2 读取为输入时。我尝试在终端 (如下所示) 中通过管道传输可执行文件,但它无法工作。
./Program1 | ./Program2
./Program1 |xargs ./Program2
./Program1 > ./Program2
我想避开文件 I/O.
注:
平台:Linux
==================
类似于以下示例的内容
程序 1(写入终端)
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;
}
问题是您正在尝试读取程序 参数。但是,当您从一个程序传输到下一个程序时,第一个程序的输出将成为第二个程序的 标准输入 (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';
}
}
我正在尝试将一个可执行文件生成的输出作为输入传递给另一个可执行文件。我已经能够一次发送一行。
问题是当我尝试从 Program1 发送 'sequence of lines generated in a while loop' 以供 Program2 读取为输入时。我尝试在终端 (如下所示) 中通过管道传输可执行文件,但它无法工作。
./Program1 | ./Program2
./Program1 |xargs ./Program2
./Program1 > ./Program2
我想避开文件 I/O.
注: 平台:Linux
==================
类似于以下示例的内容
程序 1(写入终端)
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;
}
问题是您正在尝试读取程序 参数。但是,当您从一个程序传输到下一个程序时,第一个程序的输出将成为第二个程序的 标准输入 (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';
}
}