3

我正在 Linux 机器上使用 C 语言编写一个程序,该程序显示作为程序参数呈现的文件的文件类型。程序需要确定文件是否为以下任何一种:目录、设备、(常规)文件、链接、套接字或 fifo。我不确定如何确定文件类型。

到目前为止,这是我的代码(不多):

int
main(int argc, char **argv)
{
    if( argc == 1 )     /* default: current directory */
        puts("Directory");
    else
        while( --argc > 0 )
            determine_ftype(*++argv);

    return  0;
}

谢谢!

4

1 回答 1

13

使用 POSIXstat函数并读取函数返回st_mode的结构的字段。struct stat

stat功能:

http://pubs.opengroup.org/onlinepubs/7908799/xsh/stat.html

结构struct stat类型:

http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysstat.h.html

对于 glibc,您还可以阅读手册的14.9.3 Testing the Type of a File部分glibc

http://www.gnu.org/software/libc/manual/html_node/Testing-File-Type.html

于 2012-06-30T18:20:56.260 回答