[완료]stat 좀 봐주세요.. 대체 왜 안되는거죠..ㅜㅜ

nerkis의 이미지

자꾸 -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);
}

cinsk의 이미지

nerkis의 이미지

s 넣는게 맞나요?
int 형이면 d 아닌가요
아무튼 s 넣어보니 GLIBC_2.0 이 값이 나오더군요
그래도 크기 값인데..

SoulreaveR의 이미지

buffq는 자신이 선언한 char array 아닌가요;;

Necromancer의 이미지

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

nerkis의 이미지

errno 로 보니까 파일 및 디렉토리가 없다고 뜨네요.
다시 해봐야겠네요. 또 얼마나 걸릴진 모르겠지만..

nerkis의 이미지

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일째임..아무것도 안하고..ㅜㅜ

Necromancer의 이미지

stat()에 들어가는 파일이름이 잘못됐을 수도 있습니다.
readdir()도 리턴값과 errno, 리턴한 파일이름 확인하세요.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

nerkis의 이미지

감사합니다^^
다시 다 확인해봐야겠네요.
stat 은 full path 라고 어디 글에서 봐서
디렉토리 받은거랑 파일 이름 받은거 sprintf로 하나로 합쳐서 해도 안되네요.
뭘 잘못한건지.. 아무튼 감사드려요

Necromancer의 이미지

디렉토리와 파일받은거 합칠때는 가운데 / 들어가야 하고,

싫다면 chdir() 쓰시면 될겁니다.

man 2 chdir

하지만 끝낸뒤 원래값으로 돌려놓으세요.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

nerkis의 이미지

아 결국 안되네요
일단 잠깐 머리 좀 식히고.. 아우..ㅜㅜ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.