À©µµ¿ìÁî ¸ÖÆ¼ÇÁ·Î¼¼½º ÇÁ·Î±×·¡¹Ö
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



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

À©µµ¿ìÁî¿¡¼­ÀÇ ÇÁ·Î¼¼½º¸¦ ´Ù·ç´Â ¹æ¹ýµé¿¡ ´ëÇØ¼­ ¾Ë¾Æº¼ »ý°¢ÀÌ´Ù.

À©µµ¿ìÁî ȯ°æ¿¡¼­ÀÇ ¸ÖƼ ÇÁ·Î¼¼½º ÇÁ·Î±×·¡¹Ö

À½ À©µµ¿ì´Â fork() ¸¦ Á¦°øÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ¾Ë¾Ò´Ù. ÀÎÅͳÝÀ» µÚÁ®¼­ CreateProcess¶ó´Â ºñ½ÁÇÑ ÇÔ¼ö¸¦ Á¦°øÇϰí ÀÖ´Ù´Â °ÍÀ» ¾Ë¾Ò´Ù.

±×·±µ¥, ¹®¼­¸¦ Àо´Ï ÇÁ·Î¼¼½º¸¦ º¹»çÇØ¼­ ºÐ±â½ÃŰ´Â fork()ÀÇ °³³äÀÌ ¾Æ´Ñ »õ·Î¿î ÇÁ·Î¼¼½º À̹ÌÁö¸¦ »ý¼ºÇÏ´Â execl()°ú ¿ÀÈ÷·Á ºñ½ÁÇÏ´Ù´Â ´À³¦À» ¹Þ°Ô µÇ¾ú´Ù.

BOOL WINAPI CreateProcess( 
  __in_opt     LPCTSTR lpApplicationName, 
  __inout_opt  LPTSTR lpCommandLine, 
  __in_opt     LPSECURITY_ATTRIBUTES lpProcessAttributes, 
  __in_opt     LPSECURITY_ATTRIBUTES lpThreadAttributes, 
  __in         BOOL bInheritHandles, 
  __in         DWORD dwCreationFlags, 
  __in_opt     LPVOID lpEnvironment, 
  __in_opt     LPCTSTR lpCurrentDirectory, 
  __in         LPSTARTUPINFO lpStartupInfo, 
  __out        LPPROCESS_INFORMATION lpProcessInformation 
); 
 
  1. lpApplicationName
    ½ÇÇà½Ãų ¸ðµâÀÇ À̸§À¸·Î À©µµ¿ìÁî±â¹ÝÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç À̸§À» ÀǹÌÇÑ´Ù. ¿©±â¿¡¼­ execl()°ú ºñ½ÁÇÑ ÀÏÀ» ÇÔ¼ö¶ó´Â °É Á÷°¨ÇÒ ¼ö ÀÖ´Ù. ±×·¸´Ù°í execl()°ú µ¿ÀÏÇÏ´Ù°í º¼ ¼öµµ ¾ø´Ù. execl()ÀÇ °æ¿ì ÇÁ·Î¼¼½ºÀÇ À̹ÌÁö¸¦ µ¤¾î½á ¹ö¸®´Âµ¥, CreateProcess´Â µ¶¸³ÀûÀÎ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ »ý¼º½ÃŲ´Ù. ±×·±Á¡¿¡¼­ fork & execlÀÇ Á¶ÇÕ°ú ºñ½ÁÇÏ´Ù°í ºÁ¾ß ÇÒ °Í °°´Ù.
  2. lpCommandLine
    ½ÇÇà½Ãų ¾ÖÇø®ÄÉÀ̼ǿ¡ ³Ñ±æ ¸í·ÉÇà ÀÎÀÚ¸¦ ¸í½ÃÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù. ¿¹¸¦µé¾î C:\Myapp.exe¸¦ Parm1, Parm2 ¸í·ÉÇà ÀÎÀÚ¿Í ÇÔ²² ½ÇÇà½Ã۱â À§ÇÑ ¹æ¹ýÀÌ´Ù.

    CreateProcess("C:\Myapp.exe", "Parm1 Parm2", ....); 
     
  3. lpProcessAttributes
    SECURITY_ATTRIBUTES±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ·Î Process Object ÇÚµéÀ» ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ »ó¼ÓÇÒÁö¸¦ °áÁ¤ÇÑ´Ù. NULLÀ» ÁöÁ¤Çϸé Process Object ÇÚµéÀ» »ó¼ÓÇÏÁö ¾Ê´Â´Ù.
  4. lpThreadAttributes
    SECURITY_ATTRIBUTES±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ·Î Thread Kernel Object ÇÚµéÀ» ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ »ó¼Ó ÇÒÁö¸¦ °áÁ¤ÇÑ´Ù. NULLÀ» ÁöÁ¤Çϸé Thread Krenel Object ÇÚµéÀ» »ó¼ÓÇÏÁö ¾Ê´Â´Ù.
  5. bInheritHandles
    TRUEÀ̸é ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ ÇÚµéÀ» »ó¼ÓÇÑ´Ù. ¸¸¾à FALSEÀ̸é ÇÚµéÀ» »ó¼ÓÇÏÁö ¾Ê´Â´Ù.
  6. dwCreationFlags
    ÇÁ·Î¼¼½º°¡ »ý¼ºµÉ ¶§ Ãß°¡ÇÒ Ç÷¡±×´Ù.
  7. lpEnvironment
  8. lpCurrentDirectory
  9. lpStartupInfo
  10. lpProcessInformation
    »õ·Î ¸¸µé¾îÁø ÇÁ·Î¼¼½ºÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ PROCESS_INFORMATION ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ µ¹·ÁÁØ´Ù. ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¸é PROCESS_INFORMATIONÀÌ °¡Áö°í ÀÖ´Â ÇÚµéÀ» CloseHandleÇÔ¼ö·Î Á¾·á½ÃÄÑÁà¾ß ÇÑ´Ù.

¿¹Á¦

#include <windows.h> 
#include <stdio.h> 
 
int main(int argc, char **argv) 
{ 
    STARTUPINFO si; 
    PROCESS_INFORMATION pi; 
 
    memset((void *)&si, 0x00, sizeof(si)); 
    memset((void *)&pi, 0x00, sizeof(pi)); 
    CreateProcess("C:\\windows\\notepad.exe", 
        " c:\\mytest.txt", 
        NULL, 
        NULL, 
        0, 
        NORMAL_PRIORITY_CLASS, 
        NULL, 
        NULL, 
        &si, 
        &pi); 
    WaitForSingleObject(pi.hProcess, INFINITE); 
    printf("End\n"); 
    return 1; 
 
} 
 

°ü·Ã ±Û

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.