I am working on a program in C on a linux machine that displays the file type of a file presented as an argument to the program. The program needs to determine if a file is any one of the following: directory, device, (regular) file, link, socket, or fifo. I am not exactly sure how to determine file type.
Here is my code thus far (not much):
int
main(int argc, char **argv)
{
if( argc == 1 ) /* default: current directory */
puts("Directory");
else
while( --argc > 0 )
determine_ftype(*++argv);
return 0;
}
Thanks!
Use the POSIX
statfunction and read thest_modefield of the structurestruct statreturned by the function.statfunction:http://pubs.opengroup.org/onlinepubs/7908799/xsh/stat.html
The structure
struct stattype:http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysstat.h.html
For glibc, you can also read the section
14.9.3 Testing the Type of a Fileof theglibcmanual:http://www.gnu.org/software/libc/manual/html_node/Testing-File-Type.html