如何将一个程序的输出传递到另一个程序的标准输入?

如何将一个程序的输出传递到另一个程序的标准输入?

我有一个小型 C 程序,使用 scanf() 获取输入

int main(){
    char* buf[10];
    scanf("%s", buf);
    return 0;
}

我试图传递 scanf 另一个程序的输出(一些 python 生成的字符串,甚至是echo aaa最初的字符串)。

我考虑将输出直接通过管道传输到标准输入(从另一个终端),这样做:

pidof a.out xxx echo aaa > /proc/xxx/fd/0

但它只aaa在我的 C 程序终端上打印,仍在等待输入。

提前致谢

答案1

你应该能够

echo 'string' | ./a.out

shell 将确保管道正确完成,并且您的程序将简单地从其标准输入中读取。


您正在尝试的是高度不可移植的重定向,不是管道。

另外,请记住检查返回代码scanf()并确保您的输入缓冲区足够大以容纳输入。理想情况下,使用限制读取字符数的格式字符串,例如%9s或示例中类似的内容。

相关内容