c - read() 返回 "incorrect"值

标签 c linux

while(  rd = read(fd1, buf, 512) != 0)
{
    len += rd;
    if(readed < 0) 
    perror("read: ");
}

MAN 页面说,read() 返回读取字节数,但在我的例子中,此代码返回 block 数(取决于第三个参数)或迭代数。例如,我有一个包含 36 个符号的文件,此代码返回 1,当所有符号正常读取时,如果我将 512 更改为 4,它将返回 9,依此类推。请更正我和此代码以返回以 512 大小块读取的字节数

最佳答案

rd = read(fd1, buf, 512) != 0

表示

rd = (read(fd1, buf, 512) != 0)

!= 的结果始终是 01

你可能是说

while ((rd = read(fd1, buf, 512)) != 0)

关于c - read() 返回 "incorrect"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22227243/

相关文章:

linux - 应用程序构建。 (Ubuntu 上的 Swift)

c - 如何将命令行参数读取为整数而不是字符串?

c - 链接列表事物警告: assignment from incompatible pointer type

c - 在 int 数组上使用 memcmp 是否严格符合要求?

c - _popen 崩溃[Windows - C]

linux - 未知的 arm linux 内核镜像格式

c - 如何在 vector 范围内实现排序?

linux - 没有最新结帐的 SVN 列表目录?

r - curl 包不适用于多个 R 包

c - 为什么两个连续共享内存区域上的 mremap 会导致 SIGBUS?