【问题标题】:Simple piping explanation in C?C中的简单管道解释?
【发布时间】:2013-01-15 14:49:49
【问题描述】:

我需要管道 3 个程序:AddWith5.c AddWith2.c MultiplyWith3.c

我的代码遵循这种模式:

int main(){
    int x;
    scanf("%i",&x);
    printf("%i",x*3);
    return 0;
}

我需要对它们进行管道传输,以便获得以下输出: ((x+5)+2)*3

(f1.txt 包含数字 2)

有人可以帮我吗?

我试过了:AddWith5.c | AddWith2.c | MultiplyWith3.c < f1.txt > f2.txt

提前谢谢你!

【问题讨论】:

  • 大概是你先编译的吧?
  • 它们已编译。当我按下回车键时,它只会打开带有 3 个文件的代码块。

标签: c pipe output


【解决方案1】:

管道是从左到右读取的,因此必须将输入提供给管道中的“头”(最左边)程序:

$ AddWith5 < f1.txt | AddWith2 | MultiplyWith3

另外,你不要直接调用 C 文件,每个文件都需要先单独编译成具有上述名称的二进制文件。

顺便说一句,这与 C 无关。程序也可以是 shell 脚本,或者用任何其他编程语言编写,在这个级别上没有关系。

【讨论】:

  • 完美!非常感谢!