굳이 파일이 존재 하는지 확인을 하려면
1. fopen()의 리턴값을 확인한다.
2. access()로 확인한다.
3. fstat()의 리턴값을 확인한다
구차니즘을 털고 2008.01.06일 테스트
fopen(open) / access / fstat 에러 모음은 아래 클릭!
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 이래저래 측정이 안되는건 마찬가지 ㄱ- |
fopen(open) / access / fstat 에러 모음은 아래 클릭!
'Linux' 카테고리의 다른 글
ls 명령어의 file type (0) | 2008.12.19 |
---|---|
쉘 스크립트 명령어 . (meaning of dot in sheel script) (0) | 2008.12.18 |
execl() - excute a file (0) | 2008.12.08 |
fork : Not Enough Memory (2) | 2008.12.08 |
mkfs - ext2 & ext3 (4) | 2008.11.21 |