ÇÁ·Î±×·¥ÀÌ ÀÌ¹Ì ¶°ÀÖ´ÂÁö È®ÀÎ
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : Code>C>CheckProcess



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

¼Ò°³

Damon(12) ÇÁ·Î±×·¥À» ¸¸µé´Ù º¸¸é, ÀÌÀü¿¡ µ¿ÀÏÇÑ ÇÁ·Î¼¼½º°¡ ¶°ÀÖ´ÂÁö È®ÀÎÀ» ÇØ¼­, ¶°ÀÖÀ» °æ¿ì ¹Ù·Î ÇÁ·Î±×·¥ÀÌ Á¾·áµÇµµ·Ï ÇÏ´Â Äڵ带 ³Ö¾î¾ßÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì »ç¿ë°¡´É ÇÑ °£´ÜÇÑ ÇÔ¼ö ÀÔ´Ï´Ù. ´ÙÀ½°ú °°Àº ÇÁ·Î¼¼½º·Î ÀÛµ¿ÇÕ´Ï´Ù.

ÀÌ ÄÚµå´Â ¸®´ª½º(12) kernel(12) 2.6¿¡¼­ Å×½ºÆ®µÇ¾ú½À´Ï´Ù. ¾Æ¸¶µµ 2.2, 2.4¿¡¼­µµ Àßµ¹¾Æ°¥ °ÍÀ¸·Î »ý°¢µË´Ï´Ù.
   +------+ 
   | ½ÃÀÛ | 
   +------+ 
      |  
   +------------+ 
   | Pid        | 
   | ÆÄÀÏ Ã¼Å©  | 
   +------------+ 
      | 
   +-----------------------+   Yes 
   | Pid ÆÄÀÏÀÌ Á¸ÀçÇϴ°¡ | ---------> Á¾·á 
   +-----------------------+ 
      | NO 
      | 
   +------------------------+  Yes 
   | ÇØ´ç PIDÀÇ /procÆÄÀÏÀÌ | --------> Á¾·á 
   | Á¸ÀçÇϴ°¡             | 
   +------------------------+ 
      | NO 
      | 
   +------------------------+ 
   | ÀÚ½ÅÀÇ PID·Î           | 
   | Pid ÆÄÀÏÀ» µ¤¾î¾¸      | 
   +------------------------+ 
      | 
      | 
      | 
 

ÄÚµå

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <unistd.h> 
 
int CheckProcess(char *pfile) 
{ 
    FILE *fp; 
    char pid[16]; 
    char process[256]; 
    int rtv = 0; 
 
    fp = fopen(pfile, "r"); 
    if (fp == NULL) 
    { 
        return 0; 
    } 
 
    if (fgets(pid, sizeof(pid) - 1, fp) == NULL)  
    { 
        fclose(fp); 
        return 0; 
    } 
    fclose(fp); 
 
 
    pid[strlen(pid)-1] = 0x00; 
    sprintf(process, "/proc/%s/exe", pid); 
    if (access(process, F_OK) == 0) 
    { 
        return atoi(pid); 
    } 
    return 0; 
} 
 
int WritePid(char *pfile) 
{ 
    FILE *fp; 
    char pid[16]; 
    sprintf(pid, "%d\n", getpid()); 
    fp = fopen(pfile,"w"); 
    fputs(pid, fp); 
    fclose(fp); 
} 
 

»ç¿ë¹æ¹ý

int main(int argc, char **argv) 
{ 
    int pid; 
    if ((pid = CheckProcess("/tmp/test.pid")) == 0) 
    { 
        printf("Damon exe\n"); 
        WritePid("/tmp/test.pid"); 
        while(1) 
        { 
            sleep(1); 
        } 
    } 
    else 
    { 
        printf("Damon is Exist %d\n", pid); 
    } 
} 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.