How can I check whether this is directory-path or any filename-path?
Solution 1
man 2 stat
:
NAME
fstat, fstat64, lstat, lstat64, stat, stat64 -- get file status
...
struct stat {
dev_t st_dev; /* ID of device containing file */
mode_t st_mode; /* Mode of file (see below) */
...
The status information word st_mode has the following bits:
...
#define S_IFDIR 0040000 /* directory */
Solution 2
You can use S_ISDIR
macro .
Solution 3
thanks zed_0xff and lgor Oks
this things can be check by this sample code
#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main()
{
struct stat statbuf;
FILE *fb = fopen("/home/jeegar/","r");
if(fb==NULL)
printf("its null\n");
else
printf("not null\n");
stat("/home/jeegar/", &statbuf);
if(S_ISDIR(statbuf.st_mode))
printf("directory\n");
else
printf("file\n");
return 0;
}
output is
its null
directory
Jeegar Patel
Written first piece of code at Age 14 in HTML & pascal Written first piece of code in c programming language at Age 18 in 2007 Professional Embedded Software engineer (Multimedia) since 2011 Worked in Gstreamer, Yocto, OpenMAX OMX-IL, H264, H265 video codec internal, ALSA framework, MKV container format internals, FFMPEG, Linux device driver development, Android porting, Android native app development (JNI interface) Linux application layer programming, Firmware development on various RTOS system like(TI's SYS/BIOS, Qualcomm Hexagon DSP, Custom RTOS on custom microprocessors)
Updated on June 09, 2022Comments
-
Jeegar Patel almost 2 years
by this
Why does fopen("any_path_name",'r') not give NULL as return?
i get to know that in linux directories and files are considered to be file. so when i give any directory-path or file-path in fopen with read mode it doesnt give NULL file descriptor and?
so how can i check that whether it is dirctory path or file-path ? if i am getting some path from command argument?