書中一直使用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功能還是有差別的,比如結果文件名不是按照字母順序排列的。