文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>对每个命令行参数打印文件类型

对每个命令行参数打印文件类型

时间:2010-12-24  来源:longmenyu

预备知识:
1.stat,fstat,lstat函数返回文件有关的信息结构;
2.lstat函数类似于stat,但是当命名的文件时一个符号链接时,lstat返回该符号链接有关的信息,而不是由该符号链接引用文件的信息;

程序清单:

#include <stdio.h> //for printf

#include <stdlib.h> //for exit

#include <sys/stat.h> //for S_ISREG()/S_ISDIR() and so on


int main(int argc,char *argv[])
{
    char *ptr;
    struct stat buf;
    int i;
    
    for(i=1; i<argc; i++)
    {
        printf("argv[%d]:%s: ",i,argv[i]);    

        if(lstat(argv[i],&buf) < 0)
        {
            perror("lstat error");
            continue;    
        }
        if(S_ISREG(buf.st_mode))
         ptr = "regular";
        else if(S_ISDIR(buf.st_mode))
         ptr = "directory";
        else if(S_ISCHR(buf.st_mode))
         ptr = "character special";
        else if(S_ISBLK(buf.st_mode))
         ptr = "block special";
        else if(S_ISFIFO(buf.st_mode))
         ptr = "fifo";
        else if(S_ISLNK(buf.st_mode))
         ptr = "symbolic link";
        else if(S_ISSOCK(buf.st_mode))
         ptr = "socket";
        else
            ptr = "***unknown mode***";
        
        printf("%s\n",ptr);
    }
    exit(0);
}

程序运行结果:
obe-240 test/linuxc> gcc -o stat_test stat_test4.c
obe-240 test/linuxc> ./stat_test /etc /etc/passwd /dev /dev/log /dev/tty \
? /dev/cdrom
argv[1]:/etc: directory
argv[2]:/etc/passwd: regular
argv[3]:/dev: directory
argv[4]:/dev/log: socket
argv[5]:/dev/tty: character special
argv[6]:/dev/cdrom: symbolic link
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载