[완료]stat 좀 봐주세요.. 대체 왜 안되는거죠..ㅜㅜ
글쓴이: nerkis / 작성시간: 일, 2008/05/11 - 2:05오전
자꾸 -1075772192 이런값만 뜨네요..
하물며 다른 것(st_size, mode 등등)도 다 엉뚱한 값만 떠요.
뭐가 잘못된거죠??
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main()
{
DIR *flist;
flist = opendir("/home/fison/cm");
if(flist == NULL)
{
printf("NULL");
}
char buffq[300];
while(1)
{
struct dirent *item;
item = readdir(flist);
if(item == NULL)
{
break;
}
buffq[0]='\0';
struct stat s_f_info;
stat(item->d_name, &s_f_info);
sprintf(buffq, "%d", s_f_info.st_nlink);
printf("%d\r\n", buffq);
}
closedir(flist);
}
Forums:
printf("%s\r\n",
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
GLIBC_2.0
s 넣는게 맞나요?
int 형이면 d 아닌가요
아무튼 s 넣어보니 GLIBC_2.0 이 값이 나오더군요
그래도 크기 값인데..
buffq는 자신이 선언한
buffq는 자신이 선언한 char array 아닌가요;;
stat()의 반환값과 ERRNO
1. stat()의 반환값과 errno로 에러가 났는지 점검합니다.
2. 1)에서 에러상황이 아니라면 나오는값 믿어도 됩니다.
플래그 들어가는 란은 %X 써서 어느 bit가 0이고 1인지 확인해야합니다. (st_mode 등)
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
감사합니다.
errno 로 보니까 파일 및 디렉토리가 없다고 뜨네요.
다시 해봐야겠네요. 또 얼마나 걸릴진 모르겠지만..
stat()
int main(int argc, char **argv)
{
printf("%s\n", argv[1]);
char buffq[300];
struct stat sbuf;
stat(argv[1], &sbuf);
printf("File size = %d\n", sbuf.st_size);
}
이렇게 하면 값이 올바르게 뜨네요..
근데 디렉토리 모든 파일을 읽을려고 readdir 만 읽기 시작하면
이상하게 뜨네요. 대체 차이가 뭐지..
본문글처럼. 진짜 이걸로 4일째임..아무것도 안하고..ㅜㅜ
readdir()도 리턴값과
stat()에 들어가는 파일이름이 잘못됐을 수도 있습니다.
readdir()도 리턴값과 errno, 리턴한 파일이름 확인하세요.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
ㄱ
감사합니다^^
다시 다 확인해봐야겠네요.
stat 은 full path 라고 어디 글에서 봐서
디렉토리 받은거랑 파일 이름 받은거 sprintf로 하나로 합쳐서 해도 안되네요.
뭘 잘못한건지.. 아무튼 감사드려요
디렉토리와
디렉토리와 파일받은거 합칠때는 가운데 / 들어가야 하고,
싫다면 chdir() 쓰시면 될겁니다.
man 2 chdir
하지만 끝낸뒤 원래값으로 돌려놓으세요.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
아 결국
아 결국 안되네요
일단 잠깐 머리 좀 식히고.. 아우..ㅜㅜ
댓글 달기