完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Linux当中的基本是以文件构成的,所以会有Linux一切皆是文件的说法,我不确定这句话是否完全正确,毕竟也是刚刚入门,好好学习!!! 今天总结一下Linux下面的常见文件类型: 1.普通文件: 普通文件分为两类,一个是我们的文本文件,包括我们常说的.c、.h、.txt文件等等都是文本文件,可以用我们的问问文件编辑器打开,比如说Windows下面的记事本,以及我们说的linux底下的vi工具。另外一个是我们说的二进制文件,这就是我们常说的像可执行文件就是属于这一类,这一类是没有办法用文本编辑器打开,打开后得到的是一堆乱码,因为从本质上来说,文件都是有二进制的数字构成的,不同的二进制数的排序构成了不同的内容,二进制文件对应的排序是用来的执行的,而文本文件的话对应文本编辑器就可以将我们的二进制数的排序转换解码成我们的文字从而显示出来。 2. 目录文件 我们看到的文件目录在Linux底下也是一个文件,通过文本编辑器我们也可以看到内容,包括一些基本的信息,但是这个文件是没有办法直接进行写的,Linux可以通过特殊的API进行操作。 3. 字符设备文件 4. 块设备文件 设备文件对应的就是我们的硬件设备文件,但是这些文件不是真实在硬盘当中的文件,而是由我们的文件系统模拟出来的,比如说/dev,/sys,/proc等这些文件下面的文件基本都是属于我们的设备文件。这些设备文件也大多数是不能够直接进行读写的。 5. 管道文件 Linux当中要来通信是建立管道的时候创建的文件。 6. 套接字文件 套接字就是我们的socket,这个在网络编程中是非常重要的一个东西,我们可以通过socket来和远程的终端进行连接,实现数据的交互。 7. 符号连接文件 这个相信大家会比较熟悉,我们常说的快捷方式就是属于这一类的文件。 接下去我们看下如何来获取文件的属性信息: Linux底下提供了3个API进行获取,分别是stat、fstat和lstat。 int stat(const char*pathname,struct stat*buf); int fstat(int filedes,struct stat*buf); int lstat(const char *pathname,struct stat*buf); stat和fstat的传入参数不一样,stat传入的是pathname,而fstat传入的是fd文件描述符,但是我们可以查到说lstat和stat的传入参数是一样的,但是两个的区别在于对于连接文件,假设一个文件是连接文件,那么对于stat和fstat的使用得到是对应连接到真实文件的属性,比如说在windows底下的一个快捷方式,那么使用stat和fstat是对应到真实的那个文件的属性,而lstat就是指的该连接文件的属性,也就是我们所说的快捷方式本身的属性。 上面我们谈的是三个函数的第一个参数,第二个参数我们看到都是一样的,都是struct stat *buf。这里我们需要知道一下什么是struct stat。 下面就是Linux底下对文件属性的结构体。 struct stat{ mode st_mode; /*文件类型和方式(许可数)*/ ino st_ino;/* i-节点号(序列号)*/ dev st_dev;/*设备号(文件系统)*/ dev st_rdev;/*特殊文件的设备号*/ nlink st_nlink;/*连接数*/ uid st_uid;/*属主的用户ID*/ gid st_gid;/*属主的组ID*/ off st_size;/*普通文件的字节长度*/ time st_atime;/*最后存取时间*/ time st_mtime;/*最后修改存取时间*/ time st_ctime;/*最后文件状态更改时间*/ long st_blksize;/*最佳I/O块长*/ long st_blocks;/*分配的512字节块块数 }; 在程序中我们可以定义一个这样的结构体变量,然后选择调用相应的Linux对文件属性操作的API,会自动将我们的文件属性填入我们定义的结构体变量当中,然后我们再去读取我们的结构体变量就可以得到我们想要的属性了。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4874 浏览 0 评论
87366 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4687 浏览 2 评论
3581 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2459 浏览 0 评论
1962浏览 3评论
这是i.mx6ull的关于usb的宏定义,能解释下这些宏定义的意思
1329浏览 1评论
1239浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1306浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1215浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-1 13:10 , Processed in 1.621669 second(s), Total 64, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号