首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

在linux环境下实现文件的读写操作

---- 今天分享一下在linux系统在实现对文件读写一些基本的操作,在这之前我们要掌握一些基本的技能在Linux环境。比如查看命令和一个函数的具体用法,就是相当于查手册,在Linux下有一个man手册非常有用: man查询手册 man 1 +命令 这里的1表示为查询的是Linux命令 man 2 xxx 这里的2表示为查询的是linux api man 3 xxx 这里的3表示为查询的是c库函数 在了解了这个后我们就可以开始来实现标题说的操作了。 一、在linux环境下常用文件接口函数:open、close、write、read、lseek。 二、文件操作的基本步骤分为: a、在linux系统中要操作一个文件,一般是先open打开一个文件,得到一个文件扫描描述符,然后对文件进行读写操作(或其他操作),最后关闭文件即可。 b、对文件进行操作时,一定要先打开文件,然后再进行对文件操作(打开文件不成功的话,就操作不了),最后操作文件完毕后,一定要关闭文件,否则可能会造成文件损坏 c、文件平时是存放在块设备中的文件系统中的,我们把这个文件叫做静态文件,当我们去打开一个文件时,linux内核做的操作包括:内核在进程中建立了一个打开文件的数据结构, 记录下我们打开的这个文件,内核在内存中申请一段内存,并且将静态文件的内容从块设备中读取到内存中特定地址管理存放(叫动态文件) d、打开文件后,以后对这个文件的读写操作,都是针对内存中这一份动态文件的,而不是针对静态文件的。 当我们对动态文件进行读写后,此时内存中的动态文件和块设备中的静态文件就不同步了, 当我们close 关闭动态文件时,close内部内核将内存中的动态文件的内容去更新(同步)块设备中的静态文件。 三、为什么是这样操作? 以块设备本身有读写限制(回忆Nandflash、SD、等块设备的读写特征),本身对块设备进行操作非常不灵活。而内存可以按字节为单位来操作。而且进行随机操作。 四、文件描述符是什么? 1、文件描述符:它其实实质是一个数字,这个数字在一个进程中表示一个特定的含义,当我们open打开一个文件时,操作系统在内存中构建了一些数据结构来表示这个动态文件,然后返回给应用程序一个数字作为文件描述符,这个数字就和我们内存中维护这个动态文件的这些数据结构挂钩绑定上了。以后我们应用程序如果要操作这一个动态文件,只需要用这个文件描述符进行区分。简单来说,它是来区分多个文件的(在打开多个文件的时候)。 2、文件描述的作用域就是当前的进程,出了这个当前进程,这个文件描述符就没有意义了。 五、代码实现: 1、打开文件:

03

Linux环境下的open函数分析(一)

-----今天晚上醍醐灌顶,听了一些大神前辈的指导,受益匪浅。哈哈,还是写文章吧,明天还是要搬砖呢。 今天分享的是linux环境下open函数的解析,其实在前面的文章里面我只是简单的用了一下open函数的用法(因为自己也是刚开始在学习linux,不是很懂,大神勿喷,还请多指出不足之处),当然它还有好多用法和需要注意的地方。说到这里我又想起了man手册,哈哈,因为它可以在linux环境下查看命令和api以及库函数的具体用法,实在是太强悍了。只是注解是英文的(当然也可以安装系统的时候搞成中文的,但是中文有的时候翻译的不准确,有些词语不好理解,往往英文会更好理解,前提是要一定的英文水平,不然会很难静下心来看完),就如下面,我用 man 2 open 来查看:

03

linux指令_linux最常用命令

基本命令 关机:shutdown -h halt init 0 poweroff 重启:shutdown -r reboot init 6 pwd:查看工作目录 ls:查看指定目录的内容 -l:列表显示 -a:显示所有,包括隐藏文件 -h:人性化的显示 -d:只显示目录,不查看内容 cd:切换工作目录 .:当前目录 ..:上一级目录 ~:用户家目录 -:上次切过来的目录 目录结构: linux目录与win完全不同,是从’/’开始的,只有他没有上一级目录,因此也叫根目录 详细介绍: /bin:大部分的系统命令 /boot:启动相关目录 /dev:设备文件目录,linux下一切设备皆文件 /etc:配置文件目录 /home:普通用户的家目录,一个用户对应一个文件夹 /lib:库文件 /lib64:64位库文件 /lost+found:系统异常时临时保存数据,用于恢复等操作 /media:媒体目录 /mnt:挂载目录,通用挂载点 /opt:安装系统非必须软件目录 /proc:虚拟文件系统,会映射硬件信息 /root:root用户的家目录 /sbin:超级用户才能执行的命令目录 /selinux:linux一套安全机制,非常复杂,通常不用 /srv:存放本机或本机服务器的数据或服务 /sys:类似于/proc,也是虚拟文件系统,可以映射系统信息 /tmp:临时文件,可能随时销毁 /usr:存放用户安装的应用程序 /var:系统产生的不可自动销毁的文件,如:日志、缓存等 1、vim终端编辑器 介绍:vim是对vi的扩展,被誉为终端编辑器之神 安装:yum install -y vim 工作模式:正常模式、插入模式、编辑模式 正常模式:使用vim打开文件时的默认模式 vim filename 打开文件,若文件不存在则新建 esc:切换到正常模式 shift + zz:保存退出 常用操作: vim filename +n 打开文件,定位到第n行 vim filename + 打开文件,定位到末尾 gg 定位到首行 G 定位到尾行 ngg 定位到第n行 ^ 定位到行首 $ 定位到行尾 yy 复制光标所在行 p 粘贴 nyy 复制光标开始的n行 dd 删除光标所在行 ndd 删除光标开始的n行 u 撤销操作 ctrl + r 反撤销操作 插入模式:就是可以编辑文件内容的模式,在正常模式下输入以下字符进入: i:在光标处插入 I:在行首插入 a:在光标下一个字符处插入 A:在行尾插入 o:下光标下一行插入空行 O:下光标上一行插入空行 s:删除光标所在字符并插入 S:删除光标所在行并插入 编辑模式:是对整个文件进行的操作,如:保存,退出 在正常模式下输入’:’即可进入编辑模式 :w 保存 :q 退出 :wq 保存退出,等价于 shift + zz :x 保存退出,等价于:wq :q! 强制退出 :set nu 显示行号 :set nonu 隐藏行号 :行号 定位到指定行号 /内容 查找指定内容,n下翻,N上翻 :%s/原内容/新内容 使用新内容替换原内容,全部替换 :m,ns/原内容/新内容 使用新内容替换原内容,替换m到n行 友情提醒:若非正常关闭vim,则会生成临时文件(隐藏的),需要删除 2、文件及文件夹 touch:创建普通文件 rm:删除文件,-f表示强制删除,-r表示递归删除 cp:拷贝文件,若目标目录写上文件名可以顺便把名字改了,-r可以操作目录 mv:移动文件,若目标目录写上文件名可以顺便把名字改了 mkdir:创建文件夹,-p创建中间目录 rmdir:删除文件夹,只能删除空目录 3、查看文件 cat:从上到下查看文件,全部内容 tac:从下到上查看文件,全部内容 head:查看开头的指定行内容,默认10行,head -3 1.txt tail:查看末尾的指定行内容,默认10行,tail -5 1.txt more:逐渐查看文件,回车下翻一行,空格下翻一屏,看到结尾会自动结束,q退出查看 less:逐渐查看文件,回车下翻一行,空格下翻一屏,看到结尾不会自动结束,可以上下翻 nl:功能同cat,会多显示行号 wc:统计文件信息,显示结果:行数 | 单词数 | 字节数 说明:more/less更多用法是结合管道使用,ls /etc | more 4、用户及用户组 whoami:查看当前用户 useradd:创建用户 -d:指定家目录 -u:指定用户id(uid) -g:指定所属组id(gid) -s:指定shell解释器

02
领券