2013年5月14日火曜日

C言語によるlsコマンド

前回に引き続き、代表的(?)なUNIXコマンドの一つであるlsをC言語で実装していきます
今回もなるべくシステムコールを使うこと前提で書いています
とくにオプションとかは付けずに、ディレクトリ内のファイル名一覧を表示するだけの簡単なものです


解答例:myls.c(実行ファイル名:myls)


/* 簡易lsコマンド */

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  DIR *dir;
  struct dirent *dp;
  char path[64];

  if(argc <= 1) {
    strcpy(path, ".");
  }else{
    strcpy(path,argv[1]);
  }

  dir = opendir(path);

  if(dir == NULL) {
    perror("opendir");
    exit(-1);
  }

  for(dp = readdir(dir); dp != NULL; dp = readdir(dir)) {   
    printf("%s\n",dp -> d_name); 
  }
  closedir(dir);

  return (0);
}

0 件のコメント:

コメントを投稿