首页
最新活动
服务器租用
香港服务器租用
台湾服务器租用
美国服务器租用
日本服务器租用
新加坡服务器租用
高防服务器
香港高防服务器
台湾高防服务器
美国高防服务器
裸金属
香港裸金属服务器
台湾裸金属服务器
美国裸金属服务器
日本裸金属服务器
新加坡裸金属服务器
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
CDN
CDN节点
CDN带宽
CDN防御
CDN定制
行业新闻
官方公告
香港服务器资讯
帮助文档
wp博客
zb博客
服务器资讯
联系我们
关于我们
机房介绍
机房托管
登入
注册
帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器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; } 这里观察到我们成功向文件中写入和向文件中读取数据。
上一篇
一分钟解决:vscode卡在“设置SSH主机:VS Code-正在本地下载 VS Code 服务器”
下一篇
租用家居服务器怎么选
相关文章
服务器租用有什么用途
【Linux】Linux进程控制及程序替换
uni-app uni-file-picker文件上传实现拍摄从相册选择获取图片上传文档服务器(H5上传-微信小程序上传)
搭建PXE网络装机服务器(实验详解)
云服务器和裸金属服务器一样吗
Spring Boot 报错:Web server failed to start. Port 8080 was already in use.
使用docker 搭建palworld 服务器
【幻兽帕鲁】开服务器,高性能高带宽(100mbps),免费!!!【学生党强推】
同一台服务器安装多个nginx(总结)
香港云服务器租用推荐
服务器租用资讯
·租用美国服务器配置
·怎样使用美国服务器(新的服务器怎样使用)
·怎么联系美国服务器(本服务器在美国受到法律)
·云服务器美国电影(美国高防云服务器)
·源服务器在美国(美国服务器ip)
·邮箱搭建美国服务器(群晖搭建邮箱服务器)
·微信美国服务器(微信小程序要服务器吗)
·受美国服务器保护(此服务器受美国保护)
·手机vpn美国服务器
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价
7*24H在线售后
高可用资源,安全稳定
1v1专属客服对接
无忧退款试用保障
德讯电讯股份有限公司
电话:00886-982-263-666
台湾总部:台北市中山区建国北路一段29号3楼
香港分公司:九龙弥敦道625号雅兰商业二期906室
服务器租用
香港服务器
日本服务器
台湾服务器
美国服务器
高防服务器购买
香港高防服务器出租
台湾高防服务器租赁
美国高防服务器DDos
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
行业新闻
香港服务器租用
服务器资讯
香港云服务器
台湾服务器租用
zblog博客
香港VPS
关于我们
机房介绍
联系我们
Copyright © 1997-2024 www.hkstack.com All rights reserved.