Linux c/c++之文件类型的判断

简介: 这篇文章介绍了在Linux环境下,如何使用C/C++编程通过`stat`系统调用和文件状态位判断一个文件是目录还是普通文件。
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>

int main(int argc,char* argv[]){
    struct stat st = {0};

    int ret = stat(argv[1],&st);
    if(ret){
        printf("获取文件%s状态失败!\n",argv[1]);
    }
    else{
        printf("获取文件%s状态成功!\n",argv[1]);

        if(S_ISDIR(st.st_mode)){
            printf("目录文件1!\n");
        }
        else{
            printf("普通文件1!\n");
        }
        if(st.st_mode & S_IFDIR){
            printf("目录文件2!\n");
        }
        else{
            printf("普通文件2!\n");
        }

        if((st.st_mode & S_IFMT) == S_IFDIR){
            printf("目录文件3!\n");
        }
        else{
            printf("普通文件3!\n");
        }
    }
    return 0;
}

Linux中使用了st_mode字段中的4位来标识文件类型位,因此使用st_mode & S_IFMT就可以提取出文件类型,同时也可以使用S_ISDIR(st_mode)宏将其简化使用
在这里插入图片描述
上方代码运行结果
在这里插入图片描述

相关文章
|
1天前
|
存储 Linux C语言
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
15 1
Linux C/C++之IO多路复用(aio)
|
2天前
|
存储 Linux
认识Linux文件类型和属性
认识Linux文件类型和属性
18 4
|
1天前
|
资源调度 Linux 调度
Linux C/C++之线程基础
这篇文章详细介绍了Linux下C/C++线程的基本概念、创建和管理线程的方法,以及线程同步的各种机制,并通过实例代码展示了线程同步技术的应用。
9 0
Linux C/C++之线程基础
|
1天前
|
Linux C++
Linux C/C++之IO多路复用(poll,epoll)
这篇文章详细介绍了Linux下C/C++编程中IO多路复用的两种机制:poll和epoll,包括它们的比较、编程模型、函数原型以及如何使用这些机制实现服务器端和客户端之间的多个连接。
7 0
Linux C/C++之IO多路复用(poll,epoll)
|
1天前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
9 0
Linux C/C++之TCP / UDP通信
|
1天前
|
消息中间件 Linux API
Linux c/c++之IPC进程间通信
这篇文章详细介绍了Linux下C/C++进程间通信(IPC)的三种主要技术:共享内存、消息队列和信号量,包括它们的编程模型、API函数原型、优势与缺点,并通过示例代码展示了它们的创建、使用和管理方法。
9 0
Linux c/c++之IPC进程间通信
|
1天前
|
Linux C++
Linux c/c++进程间通信(1)
这篇文章介绍了Linux下C/C++进程间通信的几种方式,包括普通文件、文件映射虚拟内存、管道通信(FIFO),并提供了示例代码和标准输入输出设备的应用。
9 0
Linux c/c++进程间通信(1)
|
1天前
|
Linux C++
Linux c/c++之进程的创建
这篇文章介绍了在Linux环境下使用C/C++创建进程的三种方式:system函数、fork函数以及exec族函数,并展示了它们的代码示例和运行结果。
9 0
Linux c/c++之进程的创建
|
1天前
|
Linux C++
Linux c/c++之文件拷贝
这篇文章介绍了在Linux环境下使用C/C++进行文件拷贝的两种方法:一种是通过system()函数调用命令行命令cp来拷贝文件,另一种是通过读写文件的方式进行文件拷贝。
8 0
Linux c/c++之文件拷贝
|
1天前
|
Linux C++
Linux c/c++文件的基本操作
在Linux环境下使用C/C++进行文件的基本操作,包括文件的创建、写入、读取、关闭以及文件描述符的定位。
8 0
Linux c/c++文件的基本操作