모니터링 프로그램
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

모니터링 프로그램에 대한 보고서 자료입니다.

목차

없음

본문내용

t(fileName, statBuf)
/*필요시 상태 엔트리 추가*/
char* fileName;
struct stat* statBuf;
{
int entryIndex;
entryIndex = findEntry(fileName); /*존재하는 엔트리 찾기*/
if(entryIndex == NOT_FOUND)
entryIndex == addEntry(fileName, statBuf); /* 새 엔트리 추가*/
else
updateEntry(entryIndex, statBuf); /*기존 엔트리 수정*/
if(entryIndex != NOT_FOUND)
stats[entryIndex].thisCycle = TRUE; /*상태 배열 수정*/
}
/*************************************************************************/
findEntry(fileName)
char* fileName;
/* 상태 배열 내의 명명된 화일의 인덱스 위치*/
{
int i;
for(i = 0; i < MAX_FILES; i++)
if(stats[i].lastCycle && strcmp(stats[i].fileName, fileName) == 0) return(i);
return(NOT_FOUND);
}
/*************************************************************************/
addEntry(fileName, statBuf)
char* fileName;
struct stat* statBuf;
/*상태 배열에 새로운 엔트리 추가*/
{
int index;
index = nextFree(); /*다음 자유 엔트리 찾기*/
if(index == NOT_FOUND) return(NOT_FOUND); /*남은 것 없음 */
strcpy(stats[index].fileName, fileName); /*화일 이름 추가*/
stats[index].status = *statBuf; /*상태 정보 추가*/
printf("ADDED"); /*표준 출력에 알림 */
printEntry(index); /*상태 정보 표시 */
return(index);
}
/*************************************************************************/
nextFree()
{
int i;
for(i = 0; i < MAX_FILES; i++)
if(!stats[i].lastCycle && !stats[i].thisCycle) return(i);
return(NOT_FOUND);
}
/*************************************************************************/
updateEntry(index, statBuf)
int index;
struct stat* statBuf;
/*파일의 변동 정보를 표시*/
{
if(stats[index].status.st_mtime != statBuf->st_mtime)
{
stats[index].status = *statBuf;
printf("CHANGED");
printEntry(index);
}
}
/*************************************************************************/
printEntry(index)
int index;
/*상태 배열의 엔트리 표시 */
{
printf("%s ", stats[index].fileName);
printStat(&stats[index].status);
}
/*************************************************************************/
printStat(statBuf)
struct stat* statBuf;
/* 상태 버퍼 표시 */
{
printf("size %lu bytes, mod. time = %s", statBuf->st_size, asctime(localtime(&statBuf->st_mtime)));
}
/*************************************************************************/
fatalError()
{
perror("monitor: ");
exit(1); /*실패*/
}
/*프로사용법 및 설명
monitor [ -t delay] [-c count] { fileName }+
모든 명세된 화일들을 매 delay 초마다 조사하고, 마지막 조사 이후 수정된 화일에 대한 정보를 화면에 표시한다. 만일
, fileName이 디렉토리라면, 그 디렉토리 안의 모든 화일들이 조사된다. 화일의 수정은 다음 세가지 방법중의 하나로
표시된다.
1. ADDED 마지막 조사이후에 화일이 생성되었음을 나타낸다. 첫번째 조사 동안에 화일 목록 안에 있는 모든 화일 들에
이 표식이 주어진다.
2. CHANGED 마지막 조사 이후에 화일이 수정되었음을 나타낸다.
3. DELETED 마지막 조사 이후에 화일이 삭제되었음을 나타낸다.
화일과 디렉토리의 수정여보를 계속하여 조사한후 stat() 시스템 호출을 사용해서, 명명된 화일의 유형이라든지 마지막
수정 시간에 대한 정보를 얻는다. 또한, 시스템 호출 getdents()를 사용해서 디렉토리를 조사한다. monitor는 stat라 불리는
상태 표를 유지하는데, 그것은 자신이 발견한 각 화일에 대해
1. 화일의 이름
2. stat()의 의해 얻어 상태 정보
3. 화일의 현재의 조사와 이전의 조사 사에에 존재 했었는지의 기록
등의 정보를 저장한다.
조사하는동안
1. 만인 화일이 조사표(scan table)에 없다면, 그것은 추가된 것이며, "ADDED"라는 메시지를 출력한다.
2. 화일이 이미 조사표에 있고 마직막 조사 이후에 수정되었다면, "CHANGED"라는 메시지를 표시한다.
3. 조사의 마지막에 이전의 조사에서는 존재했으나 현재 조사에서는 존재하지 않는 모든 엔트리들은 조사표
에서 삭제되고, "DELETED"라는 메시지가 표시된다.

키워드

  • 가격1,500
  • 페이지수10페이지
  • 등록일2003.10.31
  • 저작시기2003.10
  • 파일형식한글(hwp)
  • 자료번호#229513
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니