타파스 시스템을 개발하면서 필요한 라이브러리를 개발했다.(지금도 업데이트 하고 있음) pflib(platform library)에는 가장 기본이 되는 모듈을 라이브러리로 만들었다.
위의 디렉토리 구조를 보면 알겠지만 각각의 c소스파일과 inc/헤더파일로 이루어져 있다. 소스를 보면 알겠지만 pflib의 모든 구조는 init():생성 -> 함수사용 -> dispose()로 자원해제 방식으로 이루어져 있다.
첫번째 모듈은 pfcommon.c 이다. 이모듈은 시스템 전체에 공통으로 사용될 함수들을 작성했다. 필요하다면 공통함수를 계속해서 추가해 나갈 예정이다.
| 함수 | 설명 |
|---|---|
| isRunning | 프로세스명으로 현재 실행중인지 확인 |
헤더파일에는 사용할 변수와 함수의 포인터를 선언한다.
pfcommon.c
헤더파일에서 선언한 함수를 기술한다. 함수의 형태는 전부 static으로 선언해서 다른 모듈에서 사용가능한 extern를 배제했다. 경험으로 봤을때 시스템이 커지면 extern를 많이 사용하면 소스를 파악하거나 유지/보수에 힘이 들었다.
static int _isRunning(char *pname) 함수를 작성하고 initCommonSt()에서 pThis->isRunning = _isRunning; 함수포인터에 매핑을 했다.
내가 굳이 이렇게 사용하는 이유는 시스템이 커지고 여러사람을 거쳐서 유지/보수가 일어나면 소스에서 사용하는 함수가 어디에 있는지 왜 사용하는지 의아해 할때가 많이 있었다. 이렇게 사용을 하면 좀 귀찬더라도 pfcommon.c의 함수를 사용하는구나 라고 명확하게 알수 있어서 이렇게 라이브러리를 작성했다.
pfcommon 사용
COMMON_ST *pCommon = initCommonSt(); 으로 생성을 하고 pCommon->isRunning("termsvr"); 이렇게 함수를 사용을 하고 pCommon->dispose();로 생성된 자원을 해제한다.(여기서는 아무 기능도 없다)
모든 pflib/aplib는 이런 방식으로 동작한다.
pCommon->isRunning("termsvr"); 함수는 프로세스명 termsvr이 현재 실행되고 있는가를 확인하는 기능을 한다. 사용자 부주의로 중복실행되는걸 방지하는 기능이다.
댓글
댓글 쓰기