Linux终端管道到我的C ++程序

时间:2015-08-07 10:24:05

标签: c++ linux

我不确定术语,当我用Google搜索时,我得到了许多误导性的结果。我只需要一个推动,我会没事的。

如何将我的程序作为目标用于linux终端中的管道?

说我写了一个C ++程序MyProg

我希望能够做类似

的事情

$ ls | ./MyProg

请您给我一个关于可以使用哪个函数/流的提示?

2 个答案:

答案 0 :(得分:3)

管道,就像你所说的那样,在Linux中并不特别,这就是你找不到它的原因。

管道的作用是将一个程序的标准输出(stdout)重定向到另一个程序的标准输入(stdin)。所以只需阅读标准输入,你就会在那里找到文字。如果您想使用C ++方式,则使用std::cin,或者在C模式下使用*scanf()

如果你想知道stdin是指实际的终端还是某个重定向,你可以使用isatty(0)(0是stdin的fd,某个地方有一个常数,但我记不住了这个名字,虽然每个人都知道stdin是0)。

答案 1 :(得分:1)

您应该在应用程序中处理标准输入(stdin),输出(stdout)和错误(stderr)。他们保留了文件描述符号。请参阅以下链接File descriptor Wiki