zoukankan      html  css  js  c++  java
  • 使用lstat()判断文件类型

    #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不影响运行,第二个又是怎么回事?

  • 相关阅读:
    【cf1247E】E. Rock Is Push(dp+二分)
    【cf1245F】F. Daniel and Spring Cleaning(数位dp)
    【cf1243D】D.0-1 MST(set+均摊复杂度分析)
    [CF1201D] Treasure Hunting
    [CF1211C] Ice Cream
    [CF1213E] Two Small Strings
    [CF1219G] Harvester
    [CF1223D] Sequence Sorting
    [CF1231E] Middle-Out
    [CF1244E] Minimizing Difference
  • 原文地址:https://www.cnblogs.com/jediael/p/4304227.html
Copyright © 2011-2022 走看看