끄적끄적

반응형

굳이 파일이 존재 하는지 확인을 하려면


1. fopen()의 리턴값을 확인한다.

FILE *fopen(const char *path, const char *mode);

FILE 포인터로 리턴을 하는데 open 실패시 NULL을 리턴하며, errno에 에러를 기록함.


2. access()로 확인한다.

int access(const char *pathname, int mode);

리턴값을 바로 확인하면 됨.


3. fstat()의 리턴값을 확인한다

int fstat(int filedes, struct stat *buf);

리턴값을 바로 확인하면 됨.


구차니즘을 털고 2008.01.06일 테스트

#include <unistd.h>

#include <stdio.h>

#include <sys/stat.h>

#include <time.h>

int main()

{

        int ret = 0;

        clock_t before;

        clock_t after;

        double res;

        FILE *fp;

        struct stat st;


        before = clock();

        fp = fopen("test.txt","rb");

        after = clock();

        printf("%d - %d = %d tick\n",after, before,after - before);


        before = clock();

        ret = access("test2.txt",F_OK);

        after = clock();

        printf("%d - %d = %d tick\n",after, before,after - before);


        before = clock();

        ret = stat("test3.txt",&st);

        after = clock();

        printf("%d - %d = %d tick\n",after, before,after - before);


        return 0;

}


로 테스트 하는데, 전부 0 tick이 나온다 ㄱ-

결론은 어느걸 쓰던지 현존 시스템에서는 지장이 없다는 의미인데, 임베디드에서 쓰기 위해서는

조금 더 자세히 조사를 해봐야 할 듯 하다.


dmesg | grep CPU

CPU0: Intel(R) Pentium(R) 4 CPU 3.40GHz stepping 0a


$ time ./a.out

0 - 0 = 0 tick

0 - 0 = 0 tick

0 - 0 = 0 tick


real    0m0.001s

user    0m0.000s

sys     0m0.001s

반응형
Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]