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

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



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

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

1장. wait(2)

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

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


1.1절. »ç¿ë¹ý

#include <sys/types.h>

#include <sys/wait.h>

pid_t wait(int *status);
		


1.2절. ¼³¸í

ÁÖ·Î fork() ¸¦ ÀÌ¿ëÇØ¼­ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ »ý¼ºÇßÀ»¶§ »ç¿ëÇÑ´Ù. wait() ¸¦ ¾²¸é ÀÚ½ÄÇÁ·Î¼¼½º°¡ Á¾·áÇÒ¶§±îÁö ÇØ´ç¿µ¿ª¿¡¼­ ºÎ¸ðÇÁ·Î½º¾²°¡ sleep() ¸ðµå·Î ±â´Ù¸®°Ô µÈ´Ù. ÀÌ´Â ÀÚ½ÄÇÁ·Î¼¼½º¿Í ºÎ¸ðÇÁ·Î¼¼½ºÀÇ µ¿±âÈ­¸¦ À§ÇѸñÀûÀ¸·Î ºÎ¸ðÇÁ·Î¼¼½º°¡ ÀÚ½ÄÇÁ·Î¼¼½ºº¸´Ù ¸ÕÀú Á¾·áµÇ¾î¼­ ÀÚ½ÄÇÁ·Î¼¼½º°¡ °í¾Æ ÇÁ·Î¼¼½º(PPID °¡ 1)ÀÎ ÇÁ·Î¼¼½º°¡ µÇ´Â°É ¹æÁöÇϱâ À§ÇÑ ¸ñÀûÀÌ´Ù.

¸¸¾à ÀÚ½Ä ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¾ú´Ù¸é ÇÔ¼ö´Â Áï½Ã ¸®ÅϵǸç, ÀÚ½ÄÀÌ »ç¿ëÇÑ ¸ðµç ½Ã½ºÅÛÀÚ¿øÀ» ÇØÁ¦ÇÑ´Ù.

±×·±µ¥ ¾î¶²ÀÌÀ¯·Î ºÎ¸ð°¡ wait()¸¦ È£ÃâÇϱâ Àü¿¡ ÀÚ½Ä ÇÁ·Î¼¼½º°¡ Á¾·á¹ö¸®´Â °æ¿ìµµ ÀÖ´Ù(À߸øµÈ ¸Þ¸ð¸® ¿¬»êµîÀ¸·Î ÀÎÇÑ Á×À½, ȤÀº Á¤»óÀûÀ¸·Î), ÀÌ·²°æ¿ì ÀÚ½ÄÇÁ·Î¼¼½º´Â Á»ºñÇÁ·Î¼¼½º°¡ µÇ´Âµ¥, wait()ÇÔ¼ö´Â Áï½Ã ¸®ÅÏÇϵµ·Ï µÇ¾îÀÖ´Ù.

wait()ÀÇ ÀÎÀÚ status ¸¦ ÅëÇÏ¿© ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ »óŸ¦ ¹Þ¾Æ¿Ã¼ö Àִµ¥, ÀÚ½ÄÇÁ·Î¼¼½ºÀÇ »óŰªÀº ÀÚ½ÄÇÁ·Î¼¼½ºÀÇ Á¾·á°ª * 256(FF) ÀÌ´Ù.


1.3절. ¹Ýȯ°ª

Á¾·áµÈ ÀÚ½ÄÀÇ ÇÁ·Î¼¼½º ID´Â ¿¡·¯Àϰæ¿ì -1 ±×·¸Áö ¾ÊÀ»°æ¿ì 0À» ¹ÝȯÇÑ´Ù.


1.4절. ¿¡·¯

´Ù¾çÇÑ ¿øÀο¡ ÀÇÇØ¼­ ¿¡·¯°¡ ¹ß»ýÇÒ¼ö ÀÖÀ¸¸ç ¾Æ·¡¿Í °°Àº ¿¡·¯ ¸Þ½ÃÁöµéÀÌ ÀÖ´Ù.

ECHILD

±â´Ù¸®´Â ÀÚ½ÄÇÁ·Î¼¼½º°¡ ´õÀÌ»ó Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì

ENOTSOCK

s °¡ ¼ÒÄÏÀÌ ¾Æ´Ñ ÆÄÀÏÀϰæ¿ì

ENOTCONN

¼ÒÄÏÀÌ ¿¬°áµÇ¾î ÀÖÁö ¾ÊÀ»°æ¿ì

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)
    {
        int i;
        for (i = 0; i < 5; i++) 
        {
            printf("Child : %d\n", i);
            sleep(2);
        }
        exit(3);
    }
    else
    {
        // ºÎ¸ðÇÁ·Î¼¼½º´Â ÀÚ½ÄÇÁ·Î¼¼½º°¡ 
        // Á¾·áÇÒ¶§±îÁö ±â´Ù¸°´Ù. 
        printf("I wait Child(%d)\n", pid);
        wait(&status);
        printf("Child is exit (%d)\n", status);
    }
}
		
À§ÀÇ ¿¹Á¦¸¦ ÄÄÆÄÀÏÈÄ ½ÇÇà½ÃŰ¸é ´ÙÀ½°ú °°Àº °á°ú¸¦ º¸¿©ÁØ´Ù.
[root@localhost c_source]# ./wait
I wait Child(12128)
Child : 0
Child : 1
Child : 2
Child : 3
Child : 4
Child is exit (768)
		


Âü°í¹®Çå :
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.