You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中opendir函数参数'.'的含义是什么?

关于opendir(".")中.的含义与作用

问题背景

以下是一段用于遍历目录内容的C语言代码:

#include <stdio.h>
#include <dirent.h>
int main(void) {
    struct dirent *de; // Pointer for directory entry
    // opendir() returns a pointer of DIR type.
    DIR *dr = opendir(".");
    if (dr == NULL) // opendir returns NULL if couldn't open directory
    {
        printf("Could not open current directory" );
        return 0;
    }
    while ((de = readdir(dr)) != NULL)
        printf("%s\n", de->d_name);
    closedir(dr);
    return 0;
}

提问:上述代码中opendir('.')内的.代表什么含义?它是否指定为当前目录?同时想了解C语言中.作为opendir函数参数时的意义。


解答

没错,opendir(".")里的.完全就是指定当前工作目录,这是类Unix操作系统(Linux、macOS、BSD等)文件系统中的通用特殊路径标识,C语言的opendir函数只是遵循了这个系统约定。

具体来说:

  • 在类Unix文件系统中,每个目录都会默认包含两个特殊的目录项:
    • .:指向当前目录本身
    • ..:指向当前目录的父目录(也就是上级目录)
  • 当你将.作为opendir的参数传入时,函数会请求操作系统打开程序运行时的当前工作目录——这个目录是程序启动时继承的:如果你在终端的/home/you/myapp目录下运行这个程序,.就对应/home/you/myapp;如果程序是被其他进程启动的,就会继承那个进程的当前工作目录。
  • 你代码里的逻辑就是打开当前工作目录,然后遍历输出其中所有文件、子目录的名称,这也包括.和..这两个特殊项(运行代码时你应该能看到它们被打印出来)。

另外要注意:这个.的含义不是C语言本身定义的,而是操作系统文件系统的规范。opendir函数本质上是把你传入的路径字符串传递给底层的系统调用,由操作系统来解析这个特殊路径。所以不管用什么编程语言操作目录,.的含义都是一致的。


内容的提问来源于stack exchange,提问作者H1rouge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:57:41