読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

lsコマンド自作

UNIX

ディレクトリの読み込み。

ls1.c

/* ls1.c
 * 目的 ディレクトリの内容をリストアップする
 * 動作 引数がない場合には . そうでなければ引数のディレクトリに含まれるファイルを出力する
 */
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>

void do_ls(char []);

main (int ac, char *av[])
{
    if ( ac == 1)
        do_ls( "." );
    else
        while ( --ac ) {
            printf ("%s:\n", *++av );
            do_ls( *av );
        }
}

void do_ls( char dirname[] )
/*
 * dirnameというディレクトリのファイルをリストアップする
 */
{
    DIR *dir_ptr;               /* ディレクトリ */
    struct dirent *direntp;     /* 個々のエントリ */

    if ( ( dir_ptr = opendir( dirname ) ) == NULL )
        fprintf(stderr, "ls1: cannot open %s\n", dirname);
    else
    {
        while ( ( direntp = readdir( dir_ptr ) ) != NULL )
            printf ("%s\n", direntp->d_name );
        closedir(dir_ptr);
    }
}