´ÙÁß ±âµ¿ÀÇ ¹æÁö
INtime ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·Î¼¼½º¸¦ ½Ã½ºÅÛ»ó¿¡ ´ÙÁß ±âµ¿½ÃŰ°í ½ÍÁö ¾ÊÀº °æ¿ì µîÀº, ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ´ÙÁß ±âµ¿ÀÇ ÆÇ´ÜÀ» ó¸®ÇÒ ¼ö
ÀÖ½À´Ï´Ù.
void main(void)
{
RTHANDLE hMyProc;
RTHANDLE hTarget;
char sName[] ="2RUN"; // µ¶Æ¯ÇÑ Ä«Å»·Î±× ¸íĪ
// ·çÆ® ÇÁ·Î¼¼½ºÀÇ ÇÚµéÀ» ÃëµæÇÑ´Ù
hRootProcess = GetRtThreadHandles(ROOT_PROCESS);
// ÀÚÇÁ·Î¼¼½ºÀÇ ÇÚµéÀ» ÃëµæÇÑ´Ù
hMyProc = GetRtThreadHandles(THIS_PROCESS);
// ·çÆ® ÇÁ·Î¼¼½º¿¡ ÀÚÇÁ·Î¼¼½ºÀÇ Ä«Å»·Î±×(µî·Ï)¸¦ °ËÃâÇÒ ¼ö ÀÖ´Â °æ¿ì
// ÀÌ¹Ì °¡µ¿Çϰí ÀÖ´Ù°í ÆÇ´ÜÇÒ ¼ö ÀÖ´Ù.ŸÀÓ ¾Æ¿ôÄ¡´Â 0À¸·Î¼ Áï¼®¿¡¼ È®ÀÎ.
if( (hTarget = LookupRtHandle( hRootProcess, sName ,0 )) != BAD_RTHANDLE ){
// ·è ¿Ã¶ó°¥ ¼ö ÀÖ¾ú´ø ÇÚµéÀÌ ½ÇÀçÇÏ´Â ¿ÀºêÁ§Æ®Àϱ
// ¾ö¹ÐÇÏ°Ô È®ÀÎÇÕ´Ï´Ù.
if( GetRtHandleType( hTarget ) == PROCESS_TYPE ){
printf("2Á⵿߱ °ËÃâÇßÀ¸¹Ç·Î Á¾·áÇÏ´Â \n");
return;
}
}
// ·çÆ® ÇÁ·Î¼¼½º¿¡ ÀÚÇÁ·Î¼¼½ºÀÇ Ä«Å»·Î±×¸¦ ½Ç½ÃÇÑ´Ù.
// īŻ·Î±×´Â ÀÌ¹Ì µî·ÏÀÌ ÀÖ´Â °æ¿ì ½ÇÆÐ¿¡ ³¡³ª¹Ç·Î, ÀüÅëÀûÀ¸·Î ¾ÈīŸ·Î±×(»èÁ¦)
// (À»)¸¦ ¹«Á¶°Ç ¹ßÇàÇÑ ÈÄ ½Ç½ÃÇÑ´Ù.
UncatalogRtHandle( hRootProcess, sName );
CatalogRtHandle( hRootProcess, hMyProc ,sName );
¶Ç ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·Î¼¼½ºÀÇ Á¾·á½Ã¿¡´Â, ÇÁ·Î¼¼½º¸íÀÇ Ä«Å»·Î±×¸¦ ¾ø¾Öµµ·Ï(µíÀÌ) ÇÕ´Ï´Ù.
// À̺¥Æ®¸¦ ±â´Ù¸³´Ï´Ù
while (RtNotifyEvent(RT_SYSTEM_NOTIFICATIONS | RT_EXIT_NOTIFICATIONS,
WAIT_FOREVER,
&eiEventInfo))
{
switch(eiEventInfo.dwNotifyType)
{
case TERMINATE:
// TODO: ÀÌ ÇÁ·Î¼¼½º¸¦ Á¾·áÇÒ ¶§ÀÇ Ã³¸®
// Á¾·á½Ã¿¡ īŻ·Î±×¸¦ »èÁ¦ÇÕ´Ï´Ù
UncatalogRtHandle( hRootProcess, sName );
// ȯ°æÀ» Ŭ¸° ¾÷ ÇÕ´Ï´Ù
Cleanup(); // ¿©±â·ÎºÎÅÍ µ¹¾Æ¿Ã °ÍÀº ¾ø½À´Ï´Ù
»ùÇà ÇÁ·Î±×·¥
2run.lzh
...VisualStudio6.0project