我无法在线找到解决问题的方法。我想在Unix中调用一个函数,传递目录的路径,然后知道它是否存在。opendir()如果目录不存在,则返回错误,但我的目标不是实际打开,检查该错误,如果没有错误则将其关闭,而只是检查文件是否为目录。请问有什么方便的方法吗?
3 回答
一只甜甜圈
TA贡献1836条经验 获得超5个赞
您可以stat通过将目录名称作为第一个参数传递给系统调用。如果目录存在,0则返回a ,否则-1返回errno,将其设置为ENOENT
编辑:
如果返回值是0,则需要进行其他检查以确保该参数实际上是目录,而不是文件/符号链接/字符特殊文件/大容量特殊文件/ FIFO文件。您可以为此使用的st_mode字段stat structure。
白板的微信
TA贡献1883条经验 获得超3个赞
另一个简单的方法是:
int check(unsigned const char type) {
if(type == DT_REG)
return 1;
if(type == DT_DIR)
return 0;
return -1;
}
然后,您可以将struct dirent *对象的d_type传递给check函数。
如果检查返回1,则该路径指向常规文件。
如果check返回0,则该路径指向目录。
否则,它既不是文件也不是目录(可以是块设备/符号链接等。)
- 3 回答
- 0 关注
- 655 浏览
添加回答
举报
0/150
提交
取消