c - 使用 read() 逐字节读取文件

标签 c file-io

我正在努力思考 read() 系统调用。

如何使用read()逐字节读取实际文件?

第一个参数是int类型的文件描述符。
如何将文件传递给 read() 调用?

最佳答案

您使用 open() 打开文件;你传递了 open() 返回的文件描述符至 read() .

int fd;
if ((fd = open(filename, O_RDWR)) >= 0)
{
    char c;
    while (read(fd, &c, 1) == 1)
        putchar(c);
}

还有其他返回文件描述符的函数: creat() , pipe() , socket() , accept()

请注意,虽然这可行,但效率低下,因为它会进行大量系统调用。通常,您一次读取大量字节以减少系统调用的次数。标准 I/O 库(在 <stdio.h> 中)会自动处理这个问题。如果你使用低级 open() , read() , write() , close()系统调用,您必须自己担心缓冲等问题。

关于c - 使用 read() 逐字节读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28271209/

相关文章:

c - pthread 等待条件并不总是唤醒信号

c - 如何快速确定我的代码使用了哪些宏?

Java Buffered FileWriter 仅写入 50% 的输入行

c - 如何将文件中的文本放入数组中

serialization - 有没有办法在 Java 8 中使用 Files.lines 读取序列化文件

c - 如何从 C 中的函数返回一个数组?

c - 我如何修改此函数以生成 0<int<7 的骰子?

将 float 数据转换为必须通过 UDP 发送的 Char 数据

c# - 如何检查文件是否在 C# 中使用?

c - 使用字符指针数组存储多个char数组