为了账号安全,请及时绑定邮箱和手机立即绑定

检查Unix中是否存在目录(系统调用)

检查Unix中是否存在目录(系统调用)

C++ C
FFIVE 2019-12-03 16:52:06
我无法在线找到解决问题的方法。我想在Unix中调用一个函数,传递目录的路径,然后知道它是否存在。opendir()如果目录不存在,则返回错误,但我的目标不是实际打开,检查该错误,如果没有错误则将其关闭,而只是检查文件是否为目录。请问有什么方便的方法吗?
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您可以stat通过将目录名称作为第一个参数传递给系统调用。如果目录存在,0则返回a ,否则-1返回errno,将其设置为ENOENT


编辑:


如果返回值是0,则需要进行其他检查以确保该参数实际上是目录,而不是文件/符号链接/字符特殊文件/大容量特殊文件/ FIFO文件。您可以为此使用的st_mode字段stat structure。


查看完整回答
反对 回复 2019-12-03
?
白板的微信

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,则该路径指向目录。


否则,它既不是文件也不是目录(可以是块设备/符号链接等。)


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 655 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信