C言語でlsを実装してみた
今回新しい試みとして一切ぐぐらずにやってみたら、意外とあっさりできました。
man 3 opendir
man 3 readdir
とmanを見るだけで必要な情報は得られました。ソースコードはGithubにも置いておきますのでご自由にお使いください。
https://github.com/DQNEO/c-ls
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
/**
* 実行方法: gcc ls.c && ./a.out /tmp
*/
int main(int argc, char *argv[])
{
DIR *dir;
struct dirent *ent;
char dirname[256];
if (argc == 1) {
strcpy(dirname, ".");
} else {
strcpy(dirname, argv[1]);
}
dir = opendir(dirname);
if (dir == NULL) {
fprintf(stderr, "unable to opendir %s\n", dirname);
return 1;
}
while ((ent = readdir(dir)) != NULL) {
if (ent->d_name[0] == '.') {
continue;
}
printf("%s ", ent->d_name);
}
printf("\n");
closedir(dir);
return 0;
}
エラー処理とかがちょと甘いかもしれません。ご利用は自己責任でお願いします。
カテゴリ:
C