书中一直使用apue.h文件,现在不要apue.h头文件用简单的方法实现。
1.ls命令,列出目录中所有文件的名字,代码如下:
#include <stdio.h>
#include <dirent.h>
int main(int argc, char *argv[])
{
DIR *dp;
struct dirent *dirp;
if(argc != 2)
{
printf("usage: list directory name\n");
}
if((dp = opendir(argv[1])) == NULL)
{
printf("can't open %s\n", argv[1]);
}
while((dirp = readdir(dp)) != NULL)
{
printf("%s\n", dirp->d_name);
}
closedir(dp);
return 0;
}
2. 编译
gcc list.c -o list
3. 运行及结果
当前目录下文件名: ./list .
父目录下的文件名: ./list ..
程序後面的路径可以是任意绝对路径和相对路径,就不一一演示了。
4. 最后
可以看到实现的ls功能和系统的ls功能还是有差别的,比如结果文件名不是按照字母顺序排列的。