ファイルのユーザーID等を表示
Posted: 2014年11月25日(火) 15:45
ファイルに関してなのですが、以下のようにユーザーID等を表示させたいのですが、これでは
「stat: Bad file descriptor」と出てきてしまいます。
特に間違えて無いように思うのですが何かいけないのでしょうか…?
実行方法は「./a text1.txt text2.txt」というようにしています。
「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);
}