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