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!
1 Answer
Use the POSIX stat function and read the st_mode field of the structure struct stat returned by the function.
stat function:
The structure struct stat type:
For glibc, you can also read the section 14.9.3 Testing the Type of a File of the glibc manual: