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

我无法在线找到解决问题的方法。

我想在Unix中调用一个函数,传递目录的路径,然后知道它是否存在。opendir()如果目录不存在,则返回错误,但我的目标不是实际打开,检查该错误,如果没有错误则将其关闭,而只是检查文件是否为目录。

请问有什么方便的方法吗?


FFIVE
浏览 656回答 3
3回答

一只甜甜圈

您可以stat通过将目录名称作为第一个参数传递给系统调用。如果目录存在,0则返回a ,否则-1返回errno,将其设置为ENOENT编辑:如果返回值是0,则需要进行其他检查以确保该参数实际上是目录,而不是文件/符号链接/字符特殊文件/大容量特殊文件/ FIFO文件。您可以为此使用的st_mode字段stat structure。

白板的微信

另一个简单的方法是: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,则该路径指向目录。否则,它既不是文件也不是目录(可以是块设备/符号链接等。)
打开App,查看更多内容
随时随地看视频慕课网APP