• 使用lstat()判断文件类型 分类: H_HISTORY 20130224 11:48 703人阅读 评论(0) 收藏


    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    
    #define _GNU_SOURCE
    
    int main (int argc, char *argv[]){
    
        struct stat buf;
    
        for(int i = 1; i < argc; i++){
            if(lstat(argv[i], &buf) < 0){
                printf("lstat invoke error.");
                continue;
            }
            printf("%s is a ", argv[i]);
            if (S_ISREG(buf.st_mode)){
                printf("regular file.");
            }else if(S_ISDIR(buf.st_mode)){
                printf("direcotry.");
            }else if(S_ISBLK(buf.st_mode)){
                printf("block device.");
            }else if(S_ISCHR(buf.st_mode)){
                printf("character device.");
            }else if(S_ISFIFO(buf.st_mode)){
                printf("FIFO.");
            }else if(S_ISLNK(buf.st_mode)){
                printf("soft link.");
            }else if(S_ISSOCK(buf.st_mode)){
                printf("socket.");
            }else
                printf("Unkown type.");
         }
    
            printf("\n");
    
            exit(0);
    }


    编译时出现以下错误:

    filetype.c: In function ‘main’:
    filetype.c:14:9: warning: implicit declaration of function ‘lstat’ [-Wimplicit-function-declaration]
    filetype.c:31:9: warning: implicit declaration of function ‘S_ISSOCK’ [-Wimplicit-function-declaration]
    /tmp/ccLbzony.o: In function `main':
    filetype.c:(.text+0x182): undefined reference to `S_ISSOCK'
    collect2: error: ld returned 1 exit status
    第一个不warning不影响运行,第二个又是怎么回事?

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    机器学习-初学者入门
    安装.cer证书并将证书从.cer格式转化为.pem格式
    字符串反转C#的实现
    Linux系统下远程文件拷贝scp命令
    【Django】ESRTful APi
    数据结构-栈跟队列基础部分
    数据结构-排序
    数据分析--Matplotlib的基本使用
    数据分析--pandas的基本使用
    数据分析--numpy的基本使用
  • 原文地址:https://www.cnblogs.com/lujinhong2/p/4637416.html
Copyright © 2020-2023  润新知