开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第31天,点击查看活动详情
open函数
Linux操作系统中的open函数用于打开文件并创建新的文件描述符。它在fcntl.h头文件中定义。
pathname参数是一个字符串,指定要打开的文件的路径。flags参数指定打开文件的模式,mode参数指定如果创建文件时的权限。
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include<unistd.h>
//int open(const char *pathname, int flags, mode_t mode);
// -- flags must include O_RDONLY, O_WRONLY, or O_RDWR
// --
int main() {
int fd = open("create.txt", O_RDWR|O_CREAT, 0777);
if (fd == -1) {
perror("open");
}
close(fd);
return 0;
}
read, write函数
Linux操作系统中的read函数用于从文件中读取数据。它在unistd.h头文件中定义。
fd参数是文件描述符,指定要从其中读取数据的文件。buf参数是指向缓冲区的指针,缓冲区用于存储从文件中读取的数据。count参数是要读取的字节数。
read函数返回实际读取的字节数。如果已到达文件末尾,则返回0。如果发生错误,则返回-1,并将errno全局变量设置为指示错误。
Linux操作系统中的write函数用于向文件中写入数据。它在unistd.h头文件中定义。
fd参数是文件描述符,指定要向其中写入数据的文件。buf参数是指向缓冲区的指针,缓冲区存储要写入文件的数据。count参数是要写入的字节数。
write函数返回实际写入的字节数。如果发生错误,则返回-1,并将errno全局变量设置为指示错误。
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
参数:
-fd:文件描述符,open得到的,通过这个文件描述符操作某个文件
-buf:需要读取数据存放的地方,数组的地址
-count:指定的数组的大小
返回值:
-成功:
>0:返回实际的读取到的字节数
=0:文件已经读取完了
-失败:-1,并且设置errno
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
参数:
-fd:文件描述符,open得到的,通过这个文件描述符操作某个文件
-buf:要往磁盘写入的数据,数据
-count:要写的数据的实际的大小
返回值:
成功:实际写入的字节数
失败:返回-1,并设置errno
*/
#include <unistd.h>
#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main() {
//通过open打开english.txt文件
int srcfd = open("english.txt", O_RDONLY);
if (srcfd == -1) {
perror("open");
return -1;
}
//创建一个新的文件(拷贝文件)
int destfd = open("cpy.txt", O_WRONLY | O_CREAT, 0664);
if (destfd == -1) {
perror("open");
return -1;
}
//频繁的读写操作
char buf[1024] = {0};
int len = 0;
while((len = read(srcfd, buf, sizeof(buf))) > 0) {
write(destfd, buf, len);
}
//关闭文件
close(destfd);
close(srcfd);
return 0;
}