在C語(yǔ)言中,read()
函數(shù)用于從文件描述符中讀取數(shù)據(jù)。它的原型如下:
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
參數(shù)解釋?zhuān)?/p>
fd
:要讀取的文件描述符,可以是標(biāo)準(zhǔn)輸入(0)、標(biāo)準(zhǔn)輸出(1)或者標(biāo)準(zhǔn)錯(cuò)誤(2),或者是通過(guò)open()
函數(shù)打開(kāi)的文件描述符。buf
:用于接收讀取數(shù)據(jù)的緩沖區(qū)的指針。count
:要讀取的字節(jié)數(shù)。返回值解釋?zhuān)?/p>
errno
變量以表示具體錯(cuò)誤原因。使用示例:
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
int main() {
int fd = open("file.txt", O_RDONLY); // 打開(kāi)文件
if (fd == -1) {
perror("open");
return 1;
}
char buf[1024];
ssize_t bytesRead = read(fd, buf, sizeof(buf)); // 從文件中讀取數(shù)據(jù)
if (bytesRead == -1) {
perror("read");
return 1;
}
printf("Read %zd bytes: %s\n", bytesRead, buf);
close(fd); // 關(guān)閉文件
return 0;
}
上述示例中,首先使用open()
函數(shù)打開(kāi)了一個(gè)文件,并獲得了一個(gè)文件描述符fd
。然后使用read()
函數(shù)從文件中讀取數(shù)據(jù),將讀取的數(shù)據(jù)存儲(chǔ)在緩沖區(qū)buf
中,最多讀取sizeof(buf)
字節(jié)。最后,通過(guò)printf()
函數(shù)打印讀取的字節(jié)數(shù)和數(shù)據(jù)內(nèi)容。最后,使用close()
函數(shù)關(guān)閉了文件描述符。