read
函数在 Linux 中是系统调用,用于从文件描述符读取数据。它在 C 语言库中并没有直接对应的函数,通常是通过系统调用来实现的。在 Linux 中,read
系统调用可以读取文件的一部分数据到提供的缓冲区。
函数原型如下:
ssize_t read(int fd, void *buf, size_t count);
参数说明:
fd
:文件描述符,是一个整数,程序通过它来标识或指定打开的文件。buf
:指向用于存储读取数据的缓冲区的指针。count
:要读取的字节数。
返回值:
- 成功时,返回读取的字节数。
- 如果已到达文件末尾,则返回 0。
- 如果出现错误,则返回 -1,并设置
errno
。
示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
int fd = open("/path/to/file", O_RDONLY);
if (fd == -1) {
perror("open");
exit(EXIT_FAILURE);
}
char buffer[128];
ssize_t bytes_read = read(fd, buffer, sizeof(buffer));
if (bytes_read == -1) {
perror("read");
close(fd);
exit(EXIT_FAILURE);
}
printf("Bytes read: %ld\n", (long)bytes_read);
buffer[bytes_read] = '\0'; // 确保字符串以 null 结尾
printf("Contents: %s\n", buffer);
close(fd);
return 0;
}
在这个例子中,程序打开了一个文件,并尝试读取数据到缓冲区。然后,它打印读取的字节数和缓冲区中的内容。如果有任何错误,程序会打印错误信息并退出。