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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
あづき

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

#1

投稿記事 by あづき » 10年前

ファイルに関してなのですが、以下のようにユーザー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);
}


MoonGate

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

#2

投稿記事 by MoonGate » 10年前

ファイル名が入っているのはargv[1]と[2]だから

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

じゃないでしょうか。

閉鎖

“C言語何でも質問掲示板” へ戻る