ページ 11

ファイルのユーザーID等を表示

Posted: 2014年11月25日(火) 15:45
by あづき
ファイルに関してなのですが、以下のようにユーザーID等を表示させたいのですが、これでは
「stat: Bad file descriptor」と出てきてしまいます。
特に間違えて無いように思うのですが何かいけないのでしょうか…?

実行方法は「./a text1.txt text2.txt」というようにしています。

コード:

#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

int main(int argc, char *argv[]){
    struct stat sb;
    int j, fd, cnt;
    long uid[1000], gid[1000];
    char *c_time[1000], *a_time[1000], *m_time[1000];

    for(cnt=2; cnt<=argc; cnt++){
        fd=open(argv[cnt], O_RDONLY);
        if (fstat(fd, &sb) == -1) {
            perror("stat");
            exit(EXIT_FAILURE);
        }
        uid[cnt]=(long)sb.st_uid;
        gid[cnt]=(long)sb.st_gid;
        c_time[cnt]=ctime(&sb.st_ctime);
        a_time[cnt]=ctime(&sb.st_atime);
        m_time[cnt]=ctime(&sb.st_mtime);

    }

    for(j=2; j<=argc; j++){
        printf("j=%d\n",j);
        printf("ユーザーID : %ld\n", uid[j]);
        printf("グループID : %ld\n", gid[j]);
        printf("最終状態変更時刻: %s", c_time[j]);
        printf("最終アクセス時刻: %s", a_time[j]);
        printf("最終修正時刻: %s", m_time[j]);
    }

    exit(EXIT_SUCCESS);
}


Re: ファイルのユーザーID等を表示

Posted: 2014年11月25日(火) 17:48
by MoonGate
ファイル名が入っているのはargv[1]と[2]だから

for(cnt=1; cnt<argc; cnt++){
for(j=1; j<argc; j++){

じゃないでしょうか。