帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
[Linux打怪升级之路]-文件操作
发布时间:2024-02-27 19:08:47   分类:帮助文档
[Linux打怪升级之路]-文件操作 前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一、认识操纵系统下的文件 1、什么是文件 2、文件的类型 3、文件的共识 二、系统级的文件操作接口  1、文件打开open/文件关闭close 2、其他的文件接口 3、代码演示文件操作  本期学习目标:谈谈对文件的认识,认识操纵系统的文件接口。 一、认识操纵系统下的文件 1、什么是文件 在平常我们对于文件的认识都是在window操纵系统下认识,我们建立的目录是文件,文本文档是文件,图片是文件。 在Linux中有这么一句话:Linux下一切皆文件。 为什么这么说的呢? Linux中所有的内容都是以文件的形式保存的,我们认为普通文件是文件,一个目录我们也称为文件,甚至认为硬件设备(键盘,硬盘,打印机等)是文件。 Linux有一个根目录,其他的所以的文件都放在根目录中。 2、文件的类型 普通文件 直接就可以使用的我们就称为普通文件,如上面的makefile就是一个普通文件 目录文件 这个目录中包含各个文件的文件名和文件及其指向这些文件的指针,只要有权限就可以访问目录中的任何文件,上面的myshell就是一个目录文件,一个目录不仅仅有目录名,还有一些权限设置、文件大小等。 其他的一些文件类型:字符设备文件和块设文件、套接字文件(socket)、符号链接文件(symbolic link)、管道文件(pipe)。 3、文件的共识 空文件,也要在磁盘中占据空间。文件 = 内容 +属性。文件操纵 = 对内容 + 对属性.如果没有指明对应的文件的路径,和默认当前路径。当我们通过fopen,fclose,fwrite,fread对文件进行操纵的时候,编译代码,形成可执行的程序,但是不运行,对于的文件操纵执行了吗?没有(对文件的操纵,本质上是进程对文件的操纵)。一个文件没有被打开,可以直接进行文件的访问吗?不能 通过上面的共识我们可以得出,对文件的操纵的本质 :是进程和打开文件的关系。 二、系统级的文件操作接口  我们在C语言和C++都有对文件的操纵函数,我们都知道文件是存放在磁盘上的,而要想访问文件就必须将磁盘上的文件导入到内存中,在进行相应的操作,其实本质上是操作系统在对这些文件进行管理,而C语言和C++中对文件的操作的接口,他底层也是操作系统对文件操作的接口,只是通过了封装了而已。 1、文件打开open/文件关闭close 文件打开open  头文件:、  访问形式: 1、int open(const char *pathname, int flags); 2、int open(const char *pathname, int flags, mode_t mode); 当我们要调用open接口就必须包含相应的头文件,但这里要注意的是这里接口为我们提供了二个调用的方式,方式1是文件已经存在我们调用,方式2是文件不存在时要调用的接口。 接口参数: const char *pathname:这里就指我们要打开的文件名 int flags:指的是标记位,传过来的比特位,不同的比特位就调用不同选项,从对文件进行一些初始化。 mode_t mode:这里是设置相应的权限(如操作系统默认的普通文件的权限是0x666) 这里我们要重点了解open接口的第二个参数,上面我们说他是一个标记位 ,我们知道一个int是有32个比特位了,这里我们用每个比特位表示不同的选项。 下面我们看一段代码理解一下: #include #include #include #include #include #include // 每一个宏,对应的数值,只有一个比特位是1,彼此位置不重叠 #define ONE (1<<0) #define TWO (1<<1) #define THREE (1<<2) #define FOUR (1<<3) void show(int flags) { if(flags & ONE) printf("one\n"); if(flags & TWO) printf("two\n"); if(flags & THREE) printf("three\n"); if(flags & FOUR) printf("four\n"); } int main() { show(ONE); printf("-----------------------\n"); show(TWO); printf("-----------------------\n"); show(ONE | TWO); printf("-----------------------\n"); show(ONE | TWO | THREE); printf("-----------------------\n"); show(ONE | TWO | THREE | FOUR); printf("-----------------------\n"); return 0; }   当我们运行代码,就会发现我们通过不同的比特位就调用了不同的参数选项,展现出现不同的效果。 flags多个选项: O_RDONLY: 只读打开O_WRONLY: 只写打开O_RDWR : 读,写打开这三个常量,必须指定一个且只能指定一个O_CREAT : 若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问权O_APPEND: 追加写O_TRUNC:如果文件已经存在,且成功打开,则删除文件中原来的全部数据 对于这些选项我们还可以进行功能的多选,选项间用 “ | ” 分割 O_RDONY | O_CREAT//这里的文件用只读的方式创建,如果没有这个文件会自动创建 返回值 成功:新打开的文件描述符(fd)失败:-1 文件关闭 close 文件关闭接口用起来非常简单,只要给他传打开文件的文件描述符就可以了。  2、其他的文件接口 read读文件 函数原型: ssize_t read(int fd, void *buf, size_t count); 参数  fd:是文描述符buf:接收读取数据的缓存区count:读取的字节数返回值:读取成功则返回读取的字节数,读取到文件尾则返回0,读取失败则返回-1,同时设置全局变量errno的值来表示错误原因;  write写文件 函数原型: ssize_t write(int fd, const void *buf, size_t count); 参数: fd:是文描述符buf:存放写入数据的缓存区count:写入的的字节数返回值:写入成功则返回实际写入的字节数,写入失败则返回-1,同时设置全局变量errno的值来表示错误原因; 3、代码演示文件操作  下面为了更好的理解文件操作,为了大家演示了文件的打开,写入和读取数据,最后在关闭。 #include #include #include #include #include #include int main() { //定义文件名 char filename[] = "pjb.txt"; //定义写入的数据 char write_data[] = "hellow Linux!"; //读取的数据 char read_buf[64] = { 0 }; //测试写入数据 int fd = open(filename, O_RDWR | O_CREAT, O664); if (fd < 0) { perror("open"); return -1; } //写入内容 int ret = write(fd, write_data, sizeof(write_data)); if (ret < 0) { perror("write"); return -1; } else { printf("write: %s\n", write_data); } //关闭文件 close(fd); //测试写入文件 fd = open(filename, O_RDONLY);; if (fd < 0) { perror("open"); return -1; } //写入 ret = read(fd, read_buf, sizeof(read_buf)); if (ret < 0) { perror("read"); return -1; } else { printf("read: %s\n", read_buf); } close(fd); return 0; }  这里观察到我们成功向文件中写入和向文件中读取数据。
香港云服务器租用推荐
服务器租用资讯
·租用美国服务器配置
·怎样使用美国服务器(新的服务器怎样使用)
·怎么联系美国服务器(本服务器在美国受到法律)
·云服务器美国电影(美国高防云服务器)
·源服务器在美国(美国服务器ip)
·邮箱搭建美国服务器(群晖搭建邮箱服务器)
·微信美国服务器(微信小程序要服务器吗)
·受美国服务器保护(此服务器受美国保护)
·手机vpn美国服务器
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价