本篇文章给大家谈谈linux文件用什么标志,以及linux文件描述符是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、linux用什么标识,描述和控制文件
- 2、Linux文件系统中每个文件用什么来标识.?
- 3、"Linux的常用的文件类型分为哪六种?各自的标志符是什么?
- 4、Linux文件系统中每个文件用什么来标识。
- 5、linux特殊符号大全
- 6、linux文件系统什么是目录
1、linux用什么标识,描述和控制文件
Linux的文件标识符,和Windows的就是文件名不同,它相当于文件的一个指针。在linux的C语言中,除了用通用的《【C】文件读写问题》(点击打开链)中介绍过的fopen等c语言通用操作文件以外,其Linux应用请参考《【Linux】利用C语言文件流复制单一文件),还能用文件标识符还来操作文件。这也是Linux中C语言,最底层,最原始控制文件的方式,其函数open,read,write,close已经完美地表明这一点。同时,在Linux无论是文件、设备和管道,甚至是个可操作对象对可以视作文件来对待,具体表现为都可以用这个文件标识符来操作他们。
文件标识符非常独特,并不是指针,其变量类型就是大家非常常用的int。
至于这个东西怎么用,具体请看如下文件读写程序:
#include unistd.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h//文件控制
#include stdlib.h
#include stdio.h
#include string.h
#define MAXSIZE 512//缓冲区的大小
const char* FILEPATH="/tmp/file.txt";//文件目录
int main(void) {
int fd;//文件标识符,
char *s = "被折腾的文字";
char buffer[MAXSIZE+1];//用来接字符的缓冲区
int size;//读入的文件长度
if((fd=open(FILEPATH,O_CREAT|O_TRUNC|O_RDWR,0777))0){
//O_CREAT如果指定文件不存在,则创建这个文件,O_EXCL如果要创建的文件已存在,则返回 -1,并且修改 errno 的值
//O_APPEND每次写操作都写入文件的末尾,O_TRUNC如果文件存在,并且以只写/读写方式打开,则清空文件全部内容
//O_RDONLY只读模式,O_WRONLY只写模式,O_RDWR读写模式
//0777为最高权限
perror("打开文件失败!");
exit(1);
}
if((write(fd,s,strlen(s)))0){
perror("写入文件失败!");
exit(1);
}
//lseek(fd,0,SEEK_SET);//即把文件指针移至buf文件的开始处
lseek(fd,-strlen(s),SEEK_END);//即把文件指针往从结尾处向前移动strlen(s)个字符
if((size=read(fd,buffer,MAXSIZE))0){
perror("读入文件失败!");
exit(1);
}else{
buffer[size]='\0';//字符串数组封口
printf("%s\n",buffer);
}
if(close(fd)0) {
perror("关键文件失败!");
exit(1);
}
unlink(FILEPATH);//删除文件
exit(0);
}
这个程序的一大堆头文件,是没办法的,因为所用到的函数需要的基本头文件就是这么多,但这些头文件都是Linux的基本头文件,能够拿来直接用。
程序首先打开并同时利用open的参数创建一个文件,之后向这个文件,通过read函数写入一个名为“缓冲区”buffer的字符数组,也就是字符串string的一些东西,然后,写入完毕,因为文件操作光标将会移到文件最后,所以我们要先将其移回文件头,再利用write函数读入这个文件的内容到buffer,并打印到屏幕,最后再用close关闭文件标识符与文件的连接,并利用unlink删除这个文件,如果没有close,unlink将不起作用,因为这个程序正在占用这个/tmp/file.txt,无法删除,如果要强制删除可以考虑remove函数。
所以,上述代码的运行结果如下图:
最后,这个文件自然是要被删除的了,肯定是没有的:
上述程序很简单,但我们更多应该关注这里文件标识符的作用。fd这个int就是文件标识符,相当于FILE *的作用,但他就是一个int。实质上,这个int非常独特,同open函数,int fd里面存着要被操作文件的地址,但它却又不是int *,之后的write和read函数都要根据这个fd所指明的方向来,你可以发现write,read参数都有一个地方,填入了fd,可要求填入的,却是一个int变量,这在windows里面是没有的,同时不了解文件标识符的人,看到write和read的使用可能是云里雾里的,之后的close就更不用说了,就是清楚这个fd与被操作文件的关联关系。
unlink函数则和文件标识符无关,需要一个文件路径的参数。
2、Linux文件系统中每个文件用什么来标识.?
Linux文件系统中使用索引节点(i节点)来记录文件信息,来标识文件。
索引节点作用于Windows的文件分配表类似,索引节点是一个数据结构,它包含了一个文件的文件名,位置,大小,建立或修改时间,访问权限,所属关系等文件控制信息,一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应,系统为每个索引节点分配了一个号码,也就是该结点在数组中的索引号,称为索引节点号。Linux文件系统将文件索引节点号和文件名同时保存在目录中,所以目录只是将文件的名称和它的索引节点号结合在一起的一张表。目录中每一对文件名称和索引节点号称为一个连接。
3、"Linux的常用的文件类型分为哪六种?各自的标志符是什么?
在Linux中,有一句经典的话叫做一切皆文件”。
文件分类:
(1)普通文件(regular):存在于外部存储器中,用于存储普通文件。
(2)目录文件(directory):用于存放目录项,是文件系统管理的重要文件类型。
(3)管道文件(pipe):一种用于进程间通信的特殊文件,也称为命名管道FIFO。
(4)套接字文件(socket):一种用于网络间通信的特殊文件。
(5)链接文件(link);用于间接访问另外一个目标文件,相当于widows快捷方式。
(6)字符设备文件(character):字符设备在应用层的访问结构。
(7)块设备文件(block):块设备在应用层的访问接口。
在linux终端下输入ls -l命令,学习linux每条文件信息的最左边的一个字符即表示了该文件的类别:
b:块设备文件
c:字符设备文件
d:目录文件
l:链接文件
p:管道文件
-:普通文件
s:套接字文件
4、Linux文件系统中每个文件用什么来标识。
linux文件系统存储文件的话一般分为两个区,一个是数据区,用于存储文件数据,另一个区为inode表区,用于存放除文件名以外的所有信息。存储机理是这样的,创建文件,会对应一个于inode,当你需要打开某个文件时,首先是链接至inode表,然后读取该文件对应的inode存储的所有信息,然后根据inode里的信息读取对应的数据区的内容。
5、linux特殊符号大全
tab:文本分隔符,相当于四个空格,在命令行界面可以用来自动补齐命令与目录。
ESC:esc+. ,上一条命令的选项参数,vim恢复到命令模式。
~:家目录
`:反引号,编程中调用shell命令
!:调用前面的命令,!!调用上一条,!23调用前面低23条。
@:at符,后面接IP地址。
#:Linux文件中注释行,表示不起作用。
$:文件行结尾标识符,变量标识符。
%:格式化文本。
^:文件行首标识符
:任务放到后台
*:通配符,代表一个字符或者很多个字符。
\:用来转义,\t表示制表符,\n表示换行符。
:数据流的流入方向,表示输入,将数据传入给左侧软件。
|:管道,改变数据流的方向,将数据传入给另外的软件。
:数据流的流出方向,表示输出,将屏幕输出的内容写入一个文件。
2:数据流的流出的第二个方向,表示错误输出,报错信息会写入到这个文件中。
:表示追加写入
/:根目录,目录分隔符
‘’:双引号,支持转义
‘:单引号,不支持转义
():shell编程中使用,命令行用的不多
[]:索引
{}:代码块
::vim或者less命令中,表示可以输入命令
;:分割不同命令
-:短选项标识符-h
--:长选项标识符--help
6、linux文件系统什么是目录
LINUX有四种基本文件系统类型:普通文件、目录文件、连接文件和特殊文件,可用file命令来识别。
普通文件:如文本文件、C语言元代码、SHELL脚本、二进制的可执行文件等,可用cat、less、more、vi、emacs来察看内容,用mv来改名。
目录文件:包括文件名、子目录名及其指针。它是LINUX储存文件名的唯一地方,可用ls列出目录文件。
连接文件:是指向同一索引节点的那些目录条目。用ls来查看是,连接文件的标志用l开头,而文件面后以"-"指向所连接的文件。
特殊文件:LINUX的一些设备如磁盘、终端、打印机等都在文件系统中表示出来,则一类文件就是特殊文件,常放在/dev目录内。例如,软驱A称为/dev/fd0。LINUX无C:的概念,而是用/dev/had来自第一硬盘。
关于linux文件用什么标志和linux文件描述符是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。