Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
  1. isproc
  2. 프로세스가 살아있는지 확인하는 함수
  3. [yundream]
  4. Version 0.2
  5. 2005/05/17

설명

프로세스가 살아있는지 확인하며, 이를 위해서 /proc/[PID]를 검사한다. PID만으로 할경우 프로세스의 생존여부를 확인하는게 불확실할 수 있음으로, 프로세스명이 일치하는지 여부까지 확인한다.

사용방법

int isproc(int pid, char *exe);
  1. pid : 검사하고자 하는 프로세스의 PID
2. exe : 검사하고자 하는 프로세스의 이름 3. return : 프로세스가 존재하면 1, 그렇지 않으면 0을 리턴한다.

exe가 NULL일경우 PID만을 가지고 프로세스 생존여부를 확인한다.

int main(int argc, char **argv)
{
  int status;
  status = isproc(atoi(argv[1]), argv[2]);
  printf("file is %d\n", status);
}

코드

int isproc(int pid, char *exe)
{
  char procfile[80];
  char null[40];
  char exename[80];
  FILE *fp;
  sprintf(procfile, "/proc/%d/stat", pid);

  if (access(procfile, F_OK) != 0)
  {
    return 0;
  }
  if (exe == NULL)
  {
    return 1;
  }
  if ((fp = fopen(procfile, "r")) == NULL)
    return 0;
  fscanf(fp, "%s %s",null, exename);
  fclose(fp);
  if (strstr(exename, exe) != NULL)
    return 1;
  return 0;
}

토의

  1. 코드를 좀더 깔끔하게 다듬자.
  2. return 값을 상황에 따라 명확하게 정의할 필요가 있다.

변경사항

2004/01/08