#include <dirent.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
DIR *dp;
struct dirent *dirp;
if (argc != 2)
printf("usage: ls directory_name");
if ((dp = opendir(argv[1])) == NULL)
printf("can't open %s",argv[1]);
while ((dirp = readdir(dp)) != NULL)
printf("%s\n",dirp->d_name);
closedir(dp);
exit(0);
}
書中的"apue.h"是作者自己定義的頭文件,我這裏用系統自帶的;
"stdlib.h"是exit所需頭文件
"stdio.h"是printf所需頭文件
"dirent.h"和"sys/types.h"是opendir 和readdir所需頭文件
dirent結構體的定義如下:
struct dirent
{
ino_t d_ino; //次目錄進入點的inode
ff_t d_off; //目錄文件開頭至此目錄進入點的位移
signed short int d_reclent; //_name的長度,不包含NULL字符
unsigned char d_type; //d_name所指的文件類型
har d_name[256]; //文件名
};