linux man page : waitpid - ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ Á¾·á¸¦ ±â´Ù¸°´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

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



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

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=waitpid">waitpid</a>(2)

1장. waitpid(2)

차례
1.1절. »ç¿ë¹ý
1.2절. ¼³¸í
1.3절. ¹Ýȯ°ª
1.4절. ¿¡·¯
1.5절. ¿¹Á¦

ÇÁ·Î¼¼½ºÀÇ Á¾·á¸¦ ±â´Ù¸°´Ù.


1.1절. »ç¿ë¹ý

#include <sys/types.h>
#include <sys/wait.h>
 
pid_t waitpid(pid_t pid, int *status, int options);
		


1.2절. ¼³¸í

waitpid ÇÔ¼ö´Â Àμö·Î ÁÖ¾îÁø pid ¹øÈ£ÀÇ ÀÚ½ÄÇÁ·Î¼¼½º°¡ Á¾·áµÇ°Å³ª, ½Ã±×³Î ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ½ÅÈ£°¡ Àü´ÞµÉ¶§±îÁö waitpid È£ÃâÇÑ ¿µ¿ª¿¡¼­ ÀϽà ÁßÁö µÈ´Ù.

¸¸ÀÏ pid ·Î ÁöÁ¤µÈ ÀÚ½ÄÀÌ waitpid ÇÔ¼ö È£ÃâÀü¿¡ ÀÌ¹Ì Á¾·áµÇ¾ú´Ù¸é, ÇÔ¼ö´Â Áï½Ã ¸®ÅÏÇϰí ÀÚ½ÄÇÁ·Î¼¼½º´Â "Á»ºñÇÁ·Î¼¼½º"·Î ³²´Â´Ù.

pid °ªÀº ´ÙÀ½Áß Çϳª°¡ µÈ´Ù.

< -1

ÇÁ·Î¼¼¼­ ±×·ì ID°¡ pid ÀÇ Àý´ë°ª°ú °°Àº ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ ±â´Ù¸°´Ù.

-1

ÀÓÀÇÀÇ ÀÚ½ÄÇÁ·Î¼¼½º¸¦ ±â´Ù¸°´Ù. À̰ÍÀº wait(2) ¿Í µ¿ÀÏÇÏ´Ù.

0

ÇÁ·Î¼¼½º ±×·ì ID°¡ È£Ãâ ÇÁ·Î¼¼½ºÀÇ ID¿Í °°Àº ÀÚ½ÄÇÁ·Î¼¼½º¸¦ ±â´Ù¸°´Ù.

> 0

ÇÁ·Î¼¼½º ID°¡ pid ÀÇ °ª°ú °°Àº ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ ±â´Ù¸°´Ù.

options ÀÇ °ªÀº 0À̰ųª ´ÙÀ½°ªµé°úÀÇ OR ÀÌ´Ù.

WNOHANG

À̰ÍÀº ¾î¶² Àڽĵµ Á¾·áµÇÁö ¾Ê¾Ò´õ¶óµµ, Áï½Ã ¸®ÅÏÇ϶õ ¶æÀÌ´Ù.

WNOHANG

¸ØÃ߰ųª »óŰ¡ º¸°íµÇÁö ¾ÊÀº ÀڽĵéÀ» À§ÇØ ¸®ÅÏ

status ´Â ÇÁ·Î¼¼½ºÀÇ »óŸ¦ °¡Á®¿À±â À§Çؼ­ »ç¿ëÇÑ´Ù. status °¡ NULL ÀÌ ¾Æ´Ò°æ¿ì status °¡ °¡¸®Å°´Â À§Ä¡¿¡ ÇÁ·Î¼¼½ºÀÇ »óÅÂÁ¤º¸¸¦ ÀúÀåÇÑ´Ù. ´ÙÀ½ÀÇ ¸ÞÅ©·ÎµéÀ» ÅëÇØ¼­ »óÅÂÁ¤º¸¸¦ ¾Ë¾Æ°¡Á®¿Ã¼ö ÀÖ´Ù.

WIFEXITED(status)

ÀÚ½ÄÀÌ Á¤»óÀûÀ¸·Î Á¾·áµÇ¾ú´Ù¸é non-zero ÀÌ´Ù.

WEXITSTATUS(status)

exit()¸¦ È£ÃâÇϱâ À§ÇÑ ÀÎÀÚ³ª return °ªÀÌ ¼³Á¤µÇ°í Á¾·áµÈ ÀÚ½ÄÀÇ ¹Ýȯ ÄÚµåÀÇ ÃÖÇÏÀ§ 8ºñÆ®¸¦ Æò°¡ÇÑ´Ù. ÀÌ ¸ÅÅ©·Î´Â Á¤»óÁ¤·á - WIFEXITED(status) - À϶§¸¸ Æò°¡µÈ´Ù.

WIFSIGNALED(status)

ÀÚ½ÄÇÁ·Î¼¼½º°¡ ¾î¶² ½ÅÈ£¶§¹®¿¡ Á¾·áµÇ¾ú´Ù¸é ÂüÀ» ¹ÝȯÇÑ´Ù.

WTERMSIG(status)

ÀÚ½ÄÇÁ·Î¼¼½º¸¦ Á¾·áÇϵµ·ÏÇÑ ½ÅÈ£ÀÇ ¹øÈ£¸¦ ¹ÝȯÇÑ´Ù. ´ç¿¬È÷ WIFSIGNALED °¡ non_zero ÀÏ °æ¿ì¿¡¸¸ »ç¿ëÇÒ¼ö ÀÖ´Ù.

WIFSTOPPED(status)

¹ÝȯÀÇ ¿øÀÎÀÌ µÈ ÀÚ½ÄÇÁ·Î¼¼½º°¡ ÇöÀç Á¤ÁöµÇ¾î ÀÖ´Ù¸é ÂüÀ» ¹ÝȯÇÑ´Ù.

WSTOPSIG(status)

ÀÚ½ÄÀ» Á¤ÁöÇϵµ·Ï ¾ß±âÇÑ ½ÅÈ£ÀÇ ¼ýÀÚ¸¦ ¹ÝȯÇÑ´Ù. WIFSTOPPED°¡ non-zero Àϰæ¿ì¿¡¸¸ »ç¿ëÇÒ¼ö ÀÖ´Ù.


1.3절. ¹Ýȯ°ª

Á¾·áµÈ ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ ID´Â ¿¡·¯À϶§ -1¹Ýȯ Çϰí, ¸¸ÀÏ WNOHANG °¡ »ç¿ëµÇ°í ¾î¶² Àڽĵµ ÀÌ¿ëÇÒ¼ö ¾ø´Ù¸é 0À» ¹ÝȯÇÑ´Ù.


1.4절. ¿¡·¯

ECHILD

pid ·Î ÁöÁ¤µÈ ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÏÁö ¾Ê°Å³ª, È£ÃâÇÑ ÇÁ·Î¼¼½ºÀÇ ÀÚ½ÄÀÌ ¾Æ´Ò°æ¿ì

EINVAL

options ÀÎÀÚ°¡ À¯È¿ÇÏÁö ¾ÊÀ»°æ¿ì

ERESTARTSYS

WNOHANG °¡ ¼³Á¤µÇ¾î ÀÖÁö ¾Ê°í ½ÅÈ£°¡ ºÀ¼âµÇÁö ¾Ê¾Ò°Å³ª SIGCHLD°¡ ÀâÇûÀ»¶§

ENOBUFS

½Ã½ºÅÛ¿¡ ¿¬»êÀ» À§Çؼ­ ÀÌ¿ëÇÒ¼ö ÀÖ´Â ÀÚ¿øÀÌ ºÎÁ·ÇÒ¶§


1.5절. ¿¹Á¦

#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <string.h>
 
int main()
{
    int pid;
    int status;
 
    pid = fork();
 
    if (pid < 0)
    {
        perror("fork error : ");
        exit(0);
    }
    if (pid == 0)
    {
        printf("Im Child\n");
        sleep(10);
        return 2;
    }
    else
    {
        printf("Parent: wait (%d)\n", pid);
        waitpid(pid, &status, 0);
        if (WIFEXITED(status))
        {
            printf("Á¤»óÁ¾·á\n");
            printf("¸®Åϰª %d\n", WEXITSTATUS(status));
        }
        else if (WIFSIGNALED(status))
        {
            printf("½ÅÈ£¹Þ¾ÒÀ½\n");
            printf("½ÅÈ£¹øÈ£ %d\n", WTERMSIG(status));
        }
    }
    exit(0);
}
		
À§ ÇÁ·Î±×·¥À» ÀÚ½ÄÀÌ Á¤»óÁ¾·áÇÒ¶§±îÁö ±â´Ù¸®°Å³ª, ½ÅÈ£¸¦ Á༭ ÀÚ½ÄÀ» °­Á¦ Á¾·á½ÃŲÈÄÀÇ °á°ú°ªÀ» Å×½ºÆ® ÇØº¸±â ¹Ù¶õ´Ù.

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