我是C语言的新手。无论如何,对于大学来说,我都需要能够在Linux上的C语言中设置O_DIRECT标志来读取文本文件。我进行了很多搜索,但是虽然必须使用open(),但我只找到了使用fopen()函数的解决方案。就编程而言,作为一个新手,对我来说似乎很复杂。谁能帮我这个?

最佳答案

您的家庭作业可能是关于在文件上实现一些buffering(这是<stdio.h>fopen为您所做的)。

您可以使用read(2)计数一个字节,但这效率极低。实际上,您应该将几个千字节(例如4Kb或32Kb)的缓冲区传递给read,并且应该使用返回的大小来管理缓冲区(并可能将一些指针移入缓冲区)。

阅读Advanced Linux Programming。也许研究做这种缓冲的库的实现(GNU glibcmusl-libc都是libc的自由软件实现,因此包含一个您可以学习的<stdio.h>实现)。

不要忘记编译所有警告和调试信息(例如gcc -Wall -Wextra -g)。使用调试器(gdb)和valgrind。对于最近的GCC,还可以使用其他gcc debugging options,例如-fsanitize=address

关于c - 通过char读取Linux上C语言中的文本文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29845845/

10-12 01:30