C언어

[APR] file lock

고요한하늘... 2009. 1. 30. 14:33

6. file lock

프로세스들 중에 파일에 락을 걸려면 apr_file_lock()를 호출하면 된다. 역사적으로 유닉스 시스템에서 파일 락 API에 대해서 여러가지 혼란이 있었으나 libapr에서 제공하는 간단한 API는 매우 유용하다.

apr_status_t apr_file_lock(apr_file_t *thefile, int type);
apr_status_t apr_file_unlock(apr_file_t *thefile);

 

apr_file_lock()는 두개의 아규먼트를 가진다. 하나는 apr_file_t 오브젝트이고 다른 하나는 플래그이다. 이 플래그에 락 타입을 구체적으로 명시할수 있다. 락타입은 APR_FLOCK_SHARED또는 APR_FLOCK_EXCLUSIVE로 설정할수 있다. 앞에 있는 것은 읽기 가능한 락으로 사용할수 있고, 뒤에 있는 것은 쓰기 가능한 락으로 사용할수 있다. 파일을 락을 푸는 것은 apr_file_unlock()를 호출함으로써 가능하다.  apr_file_close()를 호출하는 것은 암묵적으로 락을 푸는 것이다. flock-sample.c를 보고 사용법을 확인해라

추가적으로 bitwised또는 APR_FLOCK_NONBLOCK를 사용할수 있다. APR_FLOCK_NONBOLOCK 플래그 없이 사용하면 apr_file_lock()를 호출하면 블락된다. APR_FLOCK_NONBLOCK를 사용하면 apr_file_lock()로 락을 할수 없을때 에러 코드(APR_EAGAIN)를 리턴한다

apr_file_lock()리턴값을  APR_SUCCESS와 비교할수 있다. 만약 APR_SUCCESS로 값이 리턴된다면 성공적으로 락이 걸린것이고, 아니라면 파일에 락이 실패한것이다.

 

'C언어' 카테고리의 다른 글

[APR] character string handling  (0) 2009.01.30
[APR] file-system directory handling  (0) 2009.01.30
warning assignment makes pointer from integer without a cast  (0) 2009.01.30
[APR] Container APIs  (0) 2009.01.29
[APR] file handling  (0) 2009.01.23