列出目录文件问题

时间:2010-11-19 13:30:10

标签: c linux ftp directory

当我按以下代码列出文件时:

/*
 * This program displays the names of all files in the current directory.
 */

#include <dirent.h> 
#include <stdio.h> 

int main(void)
{
  DIR           *d;
  struct dirent *dir;
  d = opendir(".");
  if (d)
  {
    while ((dir = readdir(d)) != NULL)
    {
      printf("%s\n", dir->d_name);
    }

    closedir(d);
  }

  return(0);
}

文件是:

1. client.c
2. deneme.c
3. server.c
4. chat.h~
5. .
6. makefile~
7. udpClient.c~
8. ..
9. udpServer.cpp~
10. client
11. chat.h
12. udpServer.c~
13. server
14. makefile
15. deneme.c~

什么是数字5和8.如果鞋子是一个名为'。'的文件。要么 '..'。为什么会发生。有什么问题?

3 个答案:

答案 0 :(得分:3)

POSIX文件系统上的每个目录都包含一个条目.,它是自身的链接,..是其父目录的链接。 (根目录是它自己的父目录。)

答案 1 :(得分:1)

''和'..'是两个始终存在的目录,这不是错误。

事实上,如果你在bash上写下

cd .

cd ..

它工作正常。

答案 2 :(得分:0)

在您要执行的每个目录列表中,

“”。将始终首先显示,它是当前目录,一旦你做了“。”的“opendir()”,你所在的目录。

“..”将始终显示为第二个,它是上一个目录,即您加入当前目录的目录,

在“..”下面,显示的所有其余部分将是您创建的目录或文件,或者当前目录中已存在的目录或文件“。”,在这种情况下。