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:

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy