使用read从stdin读取

时间:2012-01-24 14:43:39

标签: c++ file stdin cat

我正在使用以下代码从stdin中读取

int size;
int bufferSize=2000;
char echoString[bufferSize];
while ((size = read(fileno(stdin), echoString, bufferSize)) > 0){
 write(fileno(stdout), echoString, size);
}

要在屏幕上写入从stdin获取的数据......但它不能正常工作。 如果我做一只猫“hugetarfile.tar.gz”| ./myprogram | tar -zvt它有效,但最后它“崩溃”告诉有一些垃圾。 如果我做猫“hugetarfile.tar.gz”| tar -zvt它就像一个魅力..

在tar的末尾你可以看到

gzip:stdin:解压缩好了,尾随垃圾被忽略了 tar:孩子返回状态2 添加了File * fin = freopen(nill,“rb”,“stdin”)

有人可以帮帮我吗?的xD

只是告诉...我正在创建读取以发送槽式插座,但在这种情况下,这场战争更容易测试。

1 个答案:

答案 0 :(得分:0)

您必须测试读写错误。你为什么不测试你的程序,如:

./myprogram < hugetarfile.tar.gz > output.tar.gz  

并确保hugetarfile.tar.gz和output.tar.gz相同。

此致