굳이 파일이 존재 하는지 확인을 하려면
1. fopen()의 리턴값을 확인한다.
2. access()로 확인한다.
3. fstat()의 리턴값을 확인한다
구차니즘을 털고 2008.01.06일 테스트
http://minimonk.tistory.com/60?srchid=BR1http%3A%2F%2Fminimonk.tistory.com%2F60
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 이래저래 측정이 안되는건 마찬가지 ㄱ- |
http://minimonk.tistory.com/60?srchid=BR1http%3A%2F%2Fminimonk.tistory.com%2F60
'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글
링크드 리스트에 정확한 개념 (0) | 2009.04.07 |
---|---|
C언어 함수 완벽 정리 (0) | 2009.04.04 |
[C] 일정관리프로그램 (0) | 2009.04.04 |
C 일정관리 프로그램 (1) | 2009.04.04 |
[C 언어] 달력만들기 (1) | 2009.04.03 |