概述
open
#include<fcntl.h>
int open(const char *pathname, int flags, mode_t mode)
flags有三个必须选项 O_RDONLY, O_WRONLY, O_RDWR 只读,只写,读写
flags其他选项O_CREAT, O_APPEND
O_CREAT 这个参数必须和第三个参数mode一起使用,mode指定文件的访问权限0644
O_APPEND 每次写都追加到文件末尾
O_EXCL 如果指定了O_CREAT,文件存在,就会报错
结果成功返回一个文件描述符
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
int main()
{
//close(1);
char buf[10]="hellon";
int fd=open("./test_1",O_RDONLY | O_WRONLY);
int fd1 = open("./test_2",O_CREAT | O_RDWR,0644);
printf("%sn",buf);
write(fd1,buf,2);
fflush(stdout);
close(fd);
close(fd1);
return 0;
}
write
#include<unistd.h>
ssize_t write(int fd, const void *buf, size_t nbytes);
size_t你可以理解成 unsigned int,而 ssize_t 你可以理解成 int。
fd:文件描述符,也就是对前面open打开的文件进行处理
nbytes:表示一次写入数据的字节大小,一般如果read的字节数较大时,可以循环读取,它限制一次读取的数据大小
如果open创建文件时指定了OA_APPEND,文件的写会在文件的末尾继续写入,否则覆盖文件的首部
结果成功:返回nbytes的值,否则报错
read
#include<unistd.h>
ssize_t read(int fd, void *buf, size_t nbytes);
nbytes:它表示从文件fd中期望读到的字节,意思就是文件现在有4个字符,占4个字节,我期望读2个,就返回前两个字符,我期望读10个就返回仅有的4个字符
结果成功:返回返回读到的字节数,如果已到达结尾返回0
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
int main()
{
//close(1);
char buf[10]="eeqeqn";
char buf1[10];
int fd = open("./test_3", O_RDWR,0644);
int res = read(fd,buf1,10);
printf("%sn",buf1);
close(fd);
return 0;
}```
最后
以上就是过时便当为你收集整理的open write read的全部内容,希望文章能够帮你解决open write read所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复