echo {1..50..2}而不是管道到C中的另一个程序

时间:2016-01-24 01:33:12

标签: c pipe

我有命令

echo {1..50..2} | ./assn3

并打印出来

The sum of 25 numbers is 625

这是在C中,我不知道./assn3如何读取来自管道的内容。这是stdin,我使用read()还是应该使用其他内容?我只是对assn3的回声从何处读取而感到困惑?

2 个答案:

答案 0 :(得分:1)

echo {1..50..2}的输出被写入标准输出,因此在程序中标准输入的文件描述符上使用read()输出通过管道输出将起作用。

答案 1 :(得分:1)

|运算符将LHS上的命令的标准输出连接到RHS上的命令的标准输入。

echo命令(在Bash 4中,而不是Bash 3中)将单行上从1到49的奇数写入其标准输出。 assn3程序必须读取其标准输入才能获取数据。所有内容都是read()系统调用,但程序可能使用标准I / O库(fgets()getchar()scanf()或类似函数)来读取数据