我正在使用以下代码从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只是告诉...我正在创建读取以发送槽式插座,但在这种情况下,这场战争更容易测试。
答案 0 :(得分:0)
您必须测试读写错误。你为什么不测试你的程序,如:
./myprogram < hugetarfile.tar.gz > output.tar.gz
并确保hugetarfile.tar.gz和output.tar.gz相同。
此致