我不确定术语,当我用Google搜索时,我得到了许多误导性的结果。我只需要一个推动,我会没事的。
如何将我的程序作为目标用于linux终端中的管道?
说我写了一个C ++程序MyProg
我希望能够做类似
的事情$ ls | ./MyProg
请您给我一个关于可以使用哪个函数/流的提示?
答案 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