c++ - 将程序一的输出作为程序二的输入传递

标签 c++ linux input output communication

我正在寻找一种方法将程序一的输出传递给程序二的输入。我创建了两个非常简单的程序来尝试了解如何执行此操作,但我遇到了问题。

程序一:

#include <iostream>
int main()
{
    using namespace std;
    std::cout << "Hello World!";
    return 0;
}

ProgramTwo(打印所有参数):

#include <iostream>

int main(int argc, char *argv[])
{
    using namespace std;

    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;
}

我试过使用管道命令传递输出:

./one | ./two

但是我的第二个程序只打印了一个参数:

There are 1 arguments:
0 ./two

我也尝试过以下命令:

/one > ./two

但这会导致两个程序都没有输出。

我哪里错了?

最佳答案

您将一个程序的输出传递给另一个程序的方法是正确的:

./one | ./two

但是,您似乎不想这样做,而是想将一个程序的所有输出作为另一个程序的命令行参数传递。

有多种方法可以做到这一点,但其中一种是:

./two `./one`

(注意反引号!)

如果您想将其作为单个参数传递,请尝试:

./two "`./one`"

关于c++ - 将程序一的输出作为程序二的输入传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25136380/

相关文章:

linux - 如何zgrep多个字符串

jquery - 如何使用 jQuery 根据输入单选选择向父 div 添加/删除类?

c - 我应该使用哪个函数从键盘获取输入?

c++ - 没有 ExecutionPolicy 的 std::transform 或 std::generate 可以并行吗?

c++ - boost_python with python 3.5 from anaconda - (few) undefined references

c++ - 有没有办法在 Linux 上以编程方式刷新 DNS 缓存?

javascript - 如何在 JavaScript 中捕获没有可见输入字段的键盘输入

c++ - 标识符在初始化时未定义

c++ - 由 nuget 提供支持的 vc++ vs2013 代码无法构建

python - 为什么 `poll.poll` 比 `epoll.poll` 快?