当前位置: 技术问答>linux和unix
linux中系统是如何识别文件类型的
来源: 互联网 发布时间:2017-02-24
本文导语: 这种问题可以类推到windows中,难道仅仅是通过用户名吗 | linux不识别文件后缀, 文件类型只有区区几个: S_IFSOCK 0140000 socket S_IFLNK 0120000 symbolic...
这种问题可以类推到windows中,难道仅仅是通过用户名吗
|
linux不识别文件后缀, 文件类型只有区区几个:
S_IFSOCK 0140000 socket
S_IFLNK 0120000 symbolic link
S_IFREG 0100000 regular file
S_IFBLK 0060000 block device
S_IFDIR 0040000 directory
S_IFCHR 0020000 character device
S_IFIFO 0010000 FIFO
利用stat函数/命令获取。
S_IFSOCK 0140000 socket
S_IFLNK 0120000 symbolic link
S_IFREG 0100000 regular file
S_IFBLK 0060000 block device
S_IFDIR 0040000 directory
S_IFCHR 0020000 character device
S_IFIFO 0010000 FIFO
利用stat函数/命令获取。
|
linux中的文件不同于windows,文件后面的后缀没有作用。要了解linux如何获取文件类型,可以根据相关获取类型命令进入源码探知一二。
|
是读取文件头来做的,常见的复杂文件格式都有特定的文件头,可认为是一个“Magic Number”,Linux的file命令通过读取这个头部可以判断。
|
不,那个你们说的识别后缀只是和相关程序关联
Windows下,你把图片查看器打开以后,把png图片的扩展名改成其他的,还是可以被图片查看器识别,其他类型的文件也都一样
在Linux下,你把PHP文件的扩展名修改为其他的,据说Nginx是识别不了,不过Apache2.2稍微设置一下可以识别,至于你javac 和 java 这两个程序对扩展名更加敏感
|
Windows下扩展名的作用也是和Linux一样,关联程序和文件的
修改扩展名只是改变了该文件对应的打开程序,并没有修改文件本质。这个可以用md5sum等程序验证
|
up
linux下确实有些程序是通过扩展名来判断,不过不是通用的做法