我有一个小型 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
或示例中类似的内容。