|
안녕하세요. 수야랍니다.
파일 관련 함수로느 f시리즈가 참 편리하긴 하죠
하지만 공유엑세스라던가 하는 부분에서의 지원 옵션이 미약하기때문에 원하시는 상황에서는 사용하기가 좀 곤란하실겁니다.
WINAPI책을 보시면 XXXXFile등의 File로 끝나는 함수들이 있습니다.
CreaetFile 하여 파일을 생성하거나 오픈할 수 있는데요 그 안에 원하시는 옵션들은 충분히 있습니다.
또한 서버가 98이하에서 운영되는 것이 아니라면 Log는 CallBack함수로 정의하여
파일을 쓸때만 Open했다가 다 쓰고난후 Close하는 방법이 좋습니다.
( 콜백함수로 정의한다고 했는데 사용하는 방법의 차이는 있습니다. 좋으실데로 구현하셔도 상관없습니다.)
몇달 몇일을 Open한 상태로 사용하여 상관이 없긴 하지만... Open된 상태에서 전원이 나간다면
그 파일의 생존은 보장할 수 없습니다. ( 생존이라는건 write했던 내용을 이야기하는 것입니다. )
98이하의 경우라면 Open해놓고 사용해야 하는데 서버라면 98은 아니겠죠?
차이점이라고하면 I/O의 속도때문이라 할수 있겠습니다.
98이하는 (98포함이죠) I/O의 속도가 느리기 때문에 Open 하고 Close하는 시간이 오래걸리기 때문에
Open하고 사용해야 합니다.
쓰잘떼기 없는 98서버의 이야기는 이쯤에서 그만두겠습니다.
땅주인 님이 쓰신 글 :
: 서버용 프로그램을 운용중인데.. 로그 기능이 제공이 되지 않아서..
: 나중에 어떤 일이 벌어졌는 지 분석하기가 에매해서 로그 기능을 구현하려고 합니다.
:
: 지금 해 놓은 것은 파일 열어서 서버가 죽을 때까지 로그를 계속 기록하는 것인데요..
: 코드로 본다면...
:
: [시작할 때]
: fp = fopen("log.txt","at"); ..
:
: ....
: [이벤트 발생]
: ....
: fwrite("log 내용", 1, sizeof(), fp);
:
: [ 서버 종료 될 때 ]
: fclose(fp);
:
: 이런 식인데... 걱정되는 것은 파일 포인터를 open 상태로 며칠이고 몇 달이고 저렇게 나두어도
: 괜찮은 것인지 궁금해서요.. 괜찮을 것 같은데... 걱정돼서..
:
: 그리고,
: 서버가 실행 중에 로그 파일을 열면 아직 파일이 닫혀지지 않아서 에디터에서 로그의 전체 내용을
: 확인할 수 없는데... 이부분을 어떻게 해야 하는 지 아시는 분 있으면 답변을 좀.....
|