Linux下判断是否是一个目录还是一个文件的方法

上传人:小** 文档编号:139286754 上传时间:2022-08-22 格式:DOC 页数:9 大小:92.50KB
收藏 版权申诉 举报 下载
Linux下判断是否是一个目录还是一个文件的方法_第1页
第1页 / 共9页
Linux下判断是否是一个目录还是一个文件的方法_第2页
第2页 / 共9页
Linux下判断是否是一个目录还是一个文件的方法_第3页
第3页 / 共9页
资源描述:

《Linux下判断是否是一个目录还是一个文件的方法》由会员分享,可在线阅读,更多相关《Linux下判断是否是一个目录还是一个文件的方法(9页珍藏版)》请在装配图网上搜索。

1、Linux下判断是否是一个目录还是一个文件的方法功能描述:获取一些文件相关的信息。用法:#inelude#inelude#ineludeintstat(constchar*pathzstructstat*buf);intfstat(intfiledes,structstat*buf);intlstat(constchar*path,structstat*buf);参数:path:文件路径名。filedes:文件描述词。buf:是以下结构体的指针structstatdev_tst_dev;ino_tstjno;modestst_mode;nlinktstnlink;uid_tst_uid;gid

2、_tst_gid;dev_tst_rdev;off_tst_size;blksize_tst_blksize;blkcnt_tst_blocks;time_tst_atime;time_tst_mtime;time_tst_ctime;返回说明:成功执行时,返回0。失败返回-1,ermo被设为以卞的某个值EBADF:文件描述词无效EFAULT:地址空间不可访问ELOOP:遍历路径时遇到太多的符号连接ENAMETOOLONG:文件路径名太长ENOENT:路径名的部分组件不存在,或路径名是空字串ENOMEM:内存不足ENOTDIR:路径名的部分组件不是目录文件和目录statjstat和Istat函

3、数#includeintstat(constchar*restrictpathname,structstat*restrictbuf);intfstat(intfields,structstat*buf);intlstat(constchar*restrictpathname,structstat*restrictbuf);返回值:若成功则返回0,失败则返回一旦给出pathname,stat函数就返回与此命名文件有关的信息结构,fstat函数获取已在描述符fields上打开文件的有关信息。Istat函数类似于stat.但是当命名的文件是一个符号链接时,Istat返回该符号链接的有关信息,而不是

4、由该符号链接引用文件的信息。第二个参数buf是指针,它指向一个我们必须提供的结构,这些函数填写由buf指向的结构。该结构的实际定义可能随实现有所不同.structstatmode_tst_mode;/文件类型和权限信息ino_tst_ino;/i结点标识dev_tst_dev;/devicenumber(filesystem)dev_tst_rdev;/devicenumberforspecialfilesnlink_tst_nlink;/符号链接数uid_tst_uid;/用户IDgid_tst_gid;/组IDoff_tst_size;/sizeinbytesjorregularfiles

5、time_tst_st_atime;/最后一次访问的时间time_tst_mtime;/文件内容最后一次被更改的时间time_tst_ctime;/文件结构最后一次被更改的时间blksize_tst_blksize;/bestI/Oblocksizebikent_tst_blocks;numberofdiskblocksallocated;文件类型:普通文件,目录文件,块特殊文件,字符特殊文件,套接字,FIFO,符号链接.文件类型信息包含在stat结构的st_mode成员中,町以用如卜的宏确定文件类型,这些宏是stat结构中的st_mode成员.SJSREG();SJSDIR();S_ISCH

6、R();S_ISBLK();S_ISFIFO();S_ISLNK();S_ISSOCK()示例:#includeintmain(intargc,char*argv)inti;structstatbuf;char*ptr;for(i=l;iargc;i+)if(lstat(argvi,&buf)0)perror(错误原因是:”);continue;if(SSREG(buf.st_mode)pg”普通文件”;if(S_lSDIR(buf.st_mode)ptr=目录;/andsoon.cout参数为:argvi的标识是一个ptrendl;exit(O);manstat;stat.h中有判断是什么文

7、件的宏:S_ISREG()普通文件S_ISDIR()目录文件S_ISCHR()字符特殊文件S_ISBLK()块特殊文件S_ISFIFO()管道或FIFOS_ISLNK()符号连接(POSIX.1或SVR4无此类型)S_ISSOCK()套接字(POSIX.1或SVR4无此类型)具体可以参照APUE文件目录相关章节。下面给出一个具体的例子:# include# include# includeintmain(intargc,char*argv)structstatbuf;iffargc2)printffNeedParameter);return-1;if(lstat(argvl,&buf)0)pr

8、intfflstaterrorfor%srnH,argvl);return;if(S_ISDIR(buf.st_mode)printf(%sIsDIRrn;argvl);elseif(S_ISREG(buf.st_mode)printf(H%sIsFILErn,/argvl);return0;我整理的#include#inelude#inelude#include#include#includeintmain()DIR*dirjnfo;/目录指针structdirent*dir_entry;/目录项信息指针intnum=0;structstatbuf;char*ptr;打开一个待扫描的目录di

9、rjnfo=opendir(,7home/user/appM);if(dirjnfo)打开目录成功while(dir_entry=readdir(dirjnfo)!=NULL)忽略这两个特殊项目if(strcmp(dir_entry-d_name,)=011strcmp(dir_entry-d_namez,l.ll)=0)continue;具体操作。/plugin_create(sry,dir_entry-d_name);num+;printf(,n%dn,/num);if(lstat(dir_entry-d_name,&buf)d_name);printf(H%szptr);/whileLi

10、nux下c判断一个文件是否存在#include#inelude#defineFOOfoointmain(void)if(!access(FOO,F_OK)if(!unlink(FOO)elseprintf(remove%sfailed/n,FOO);elseprintf(M%snotexisted/n1,FOO);return0;linux下的access。函数判断文件是否存在、打印时间一、access函数功能描述:检查调用进程是否可以对指定的文件执行某种操作。用法:#include#includeintaccess(constchar*pathname,intmode);参数:pathnam

11、e:需要测试的文件路径名。mode:需要测试的操作模式,可能值是一个或多个R_OK(可读?),W_OK(可写?),X_OK(可执行?)或F_OK(文件存在?)组合体。返回说明:成功执行时,返回0。失败返回-1,ermo被设为以卞的某个值EINVAL:模式值无效EACCES:文件或路径名中包含的目录不可访问ELOOP:解释路径名过程中存在太多的符号连接ENAMETOOLONG:路径名太长ENOENT:路径名中的目录不存在或是无效的符号连接ENOTDIR:路径名中当作目录的组件并非目录EROFS:文件系统只读EFAULT:路径名指向可访问的空间外EIO:输入输出错误ENOMEM:不能获取足够的内核

12、内存ETXTBSY:对程序写入出错例如:C代码#include#include#include#includeintmain()if(access(test.c,F_OK)!=-l)printf(文件test.c存在.n);elseprintf(test.c不存在!n);if(access(test.c/R_OK)!=-l)printf(test.c有可读权限n);elseprintf(test.c不可读.n);if(access(test.c,W_OK)!=-l)printf(test.c有可写权限n);elseprintf(test.c不可写.n);if(access(test.czX_O

13、K)!=-l)printf(test.c有可执行权限n);elseprintf(test.c不可执ItAn);return0;运行结果如下:二、如果在C中打印当前时间下面是一个打印系统当前时间的小例子,函数的语法暂时就不列出了,只是会用这些就差不多了C代码sndudeAstdio.hvsndudeAtimehvintmainotimeltnowHtime(NULL)-charbuf【25bstrftime(buE24=96Y96m96d=-oca-time(20now);printf(=96s3bufrstrftime(buE24求596ml?6d次H涼M求s=oca-iime(20now);printf(=96s3bufrstrftime(buE2496y%m?6d次H求M求s=oca-time2snow);printf(=96s3bufrstrftime(buE2496y%m?6d=ocaEme25now);printf(=96s3bufrstrftime(buE24求H求M求s=oca_time(20now);printf(=96s3bufrreturn9曲g於汩:

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!