linux下有下面7种文件类型:
1、普通文件:
这是最常见的文件类型,我们写的.c文件、可执行的二进制文件都是普通文件。
2、目录文件:
这个文件包含了其他文件的名字以及指向与这些文件有关的信息。
3、字符设备文件:
这类文件提供了对设备不带缓冲区的访问,每次访问长度可变。
4、块设备文件:
这类型的文件提供对设备(如磁盘)带缓冲的访问,每次访问以固定的长度单位进行。
5、FIFO:
这类文件用于进程间的通信。
6、套接字:
这类文件用于进程间的网络通信。
7、链接文件:
这类文件指向于另一个文件。
在linux下想要知道一个文件到底是属于哪种文件类型,直接通过指令ls -l就可以获取
下面我们通过写代码来获取文件的类型:
-
#include <stdio.h>
-
#include <sys/types.h>
-
#include <sys/stat.h>
-
#include <unistd.h>
-
#include <stdlib.h>
-
-
int main(int argc,char **argv)
-
{
-
int i;
-
struct stat buf;
-
int ret_val;
-
for(i = 1;i < argc;i++)
-
{
-
printf("%s:",argv[i]);
-
ret_val = lstat(argv[i],&buf);
-
if(-1 == ret_val)
-
{
-
perror("lstat");
-
exit(1);
-
}
-
-
if(S_ISREG(buf.st_mode))
-
{
-
printf("regular file\n");
-
}
-
else if(S_ISDIR(buf.st_mode))
-
{
-
printf("directory file\n");
-
}
-
else if(S_ISCHR(buf.st_mode))
-
{
-
printf("character dev file\n");
-
}
-
else if(S_ISBLK(buf.st_mode))
-
{
-
printf("block dev file\n");
-
}
-
else if(S_ISFIFO(buf.st_mode))
-
{
-
printf("fifo file\n");
-
}
-
else if(S_ISLNK(buf.st_mode))
-
{
-
printf("link file\n");
-
}
-
else if(S_ISSOCK(buf.st_mode))
-
{
-
printf("socket file\n");
-
}
-
}
-
}
执行结果:
阅读(1565) | 评论(0) | 转发(0) |