굳이 파일이 존재 하는지 확인을 하려면
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
[프로그래밍/C] 날짜/시간 구하기 (0) | 2017.01.30 |
---|---|
[프로그래밍/C] 일정관리프로그램 (4) | 2017.01.26 |
[프로그래밍/C] C언어 함수 완벽 정리 (0) | 2017.01.20 |
[프로그래밍/C] bit 연산 , 비트 연산 (0) | 2017.01.14 |
[프로그래밍/C] 링크드리스트를 이용한 stacklist (0) | 2017.01.06 |