socketpair(2)
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>socketpair(2)



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

<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> 
<chapter lang=ko> 
<!-- ÀÛ¼ºÀÚ : yundream             --> 
<!-- ÀÛ¼ºÀÏ : 2004/02/09           --> 
<!-- ¿¬¶ôó : yundream@joinc.co.kr --> 
 
<!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> 
<title>socketpair(2)</title> 
 
<!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> 
<para> 
    ¿¬°áµÈ ¼ÒÄÏ ½ÖÀ» »ý¼ºÇÑ´Ù. 
</para> 
  
<!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> 
<section> 
    <title>»ç¿ë¹ý</title> 
    <para> 
        <screen> 
#include <sys/types.h> 
#include <sys/socket.h> 
 
int socketpair(int d, int type, int protocol, int sv[2]); 
        </screen> 
    </para> 
</section> 
 
<!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> 
<section> 
    <title>¼³¸í</title> 
    <para> 
        socketpair()Àº ¿É¼ÇÀ¸·Î <emphasis>d</emphasis>¿µ¿ª(domain)À» °¡Áö¸ç 
        <emphasis>protocol</emphasis>ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ´Â  
        <emphasis>type</emphasis>ÀÇ ¼ÒÄÏ ½ÖÀ» »ý¼ºÇÑ´Ù. »ý¼ºµÈ ¼ÒÄÏ ½ÖÀº 
        <emphasis>sv</emphasis>¸¦ ÅëÇØ¼­ ³Ñ¾î¿Â´Ù. µÎ°³ÀÇ ¼ÒÄÏÀº ¼­·Î  
        ±¸º°ÇÒ ¼ö ¾ø´Ù.   
    </para> 
    <para> 
        º¸Åë ºÎ¸ð ÀÚ½Ä ÇÁ·Î¼¼½º°£ ³»ºÎ Åë½Å(IPC)¸¦ À§Çؼ­ »ç¿ëÇÑ´Ù. ¼ÒÄÏÀ̹ǷΠ
        ¾ç¹æÇâ(Àаí/¾²±â) Åë½ÅÀÌ °¡´ÉÇÏ´Ù. 
    </para> 
</section> 
 
<!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> 
<section> 
    <title>¹Ýȯ°ª</title> 
    <para> 
        ¼º°ø½Ã 0À» ¹ÝȯÇÏ°í ½ÇÆÐÇÒ °æ¿ì -1À» ¹ÝȯÇÑ´Ù. 
    </para> 
</section> 
 
<section> 
    <title>¿¡·¯</title> 
    <para> 
        <variablelist>     
            <varlistentry> 
            <term>EMFILE</term>     
            <listitem> 
                <para>     
                    ³Ê¹« ¸¹Àº ÆÄÀÏÀÌ ¿­·ÁÀ־ ´õÀÌ»ó ¼ÒÄÏÀ» »ý¼ºÇÒ ¼ö ¾ø´Ù. 
                </para>     
            </listitem> 
            </varlistentry> 
 
            <varlistentry> 
            <term>EAFNOSUPPORT</term> 
            <listitem> 
                <para> 
                    ÁöÁ¤ÇÑ ÁÖ¼Ò ÁöÁ¤¹æ½ÄÀÌ Áö¿øµÇÁö ¾Ê´Â´Ù. 
                </para> 
            </listitem> 
            </varlistentry> 
            <varlistentry> 
            <term>EPROTONOSUPPORT</term> 
            <listitem> 
                <para> 
                    ÁöÁ¤µÈ ÇÁ·ÎÅäÄÝÀÌ Áö¿øµÇÁö ¾Ê´Â´Ù. 
                </para> 
            </listitem> 
            </varlistentry> 
            <varlistentry> 
            <term>EFAULT</term> 
            <listitem> 
                <para> 
                    ÁÖ¼Ò <emphasis>ev</emphasis>°¡ ÇÁ·Î¼¼½º ÁÖ¼Ò °ø°£ÀÇ  
                    À¯È¿ÇÑ ºÎºÐÀ» °¡¸®Å°Áö ¾Ê´Â´Ù. 
                </para> 
            </listitem> 
            </varlistentry> 
        </variablelist>     
    </para> 
</section> 
 
 
<!-- ¸¶Áö¸·À¸·Î ¿¡Á¦ ÀÔ´Ï´Ù                                                 --> 
<!-- ¿©±â¿¡´Â ¿ÏÀüÇÑ ¿¹Á¦°¡ µé¾î°¡ Àִµ¥, ±»ÀÌ ¿ÏÀüÇÑ ¿¹Á¦¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ --> 
<!-- ÄÚµå ÀϺκи¸ ÀÛ¼ºÇؼ­ ¿Ã·ÁÁּŵµ µË´Ï´Ù                               -->  
<!-- "<", ">", "&" µîÀº º¯È¯ÇØ ÁÖ¼Å¾ß Çϴµ¥, ±ÍÂúÀ¸½Ã¸é :-) º¯È¯ ÇÏÁö ¾Ê   --> 
<!-- ¾Æµµ µË´Ï´Ù. Á¦°¡ °Ë»ç ÇØ¼­ ¿Ã¸®°Ú½À´Ï´Ù                               --> 
<!-- ¿¹Á¦¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» Àû¾îÁּŵµ µÇ±¸¿ä                            --> 
<section> 
    <title>¿¹Á¦</title> 
    <para> 
        <screen> 
#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 
#include <sys/socket.h> 
#include <sys/types.h> 
 
int main() 
{ 
    int pid; 
    char buf[256]; 
    int fd; 
    int sv[2]; 
    int num = 0; 
 
    socketpair(AF_UNIX, SOCK_STREAM, AF_LOCAL, sv); 
    pid = fork(); 
    if (pid == 0) 
    { 
        dup2(sv[0], 0); 
        close(sv[1]); 
        close(sv[0]); 
        execl("./pipe_cl", "pipe_cl", NULL); 
    } 
    else if (pid > 0) 
    { 
        close(sv[0]); 
        while(1) 
        { 
            write(sv[1], (void *)&num, 4); 
            printf("write %d\n", num); 
            read(sv[1], (void *)&num, 4); 
            printf("read %d\n", num); 
        } 
    } 
} 
        </screen> 
        À§ ÇÁ·Î±×·¥Àº fork()ÇÑ ÈÄ ÀÚ½ÄÇÁ·Î¼¼½º¿¡¼­ pipe_clÀ» ½ÇÇà½ÃŲ´Ù. 
        Àڽİú ºÎ¸ð ÇÁ·Î¼¼½º´Â ¼ÒÄÏÀ» ÅëÇÏ¿© ¿¬°áµÇ°í À̰ÍÀ» ÅëÇØ¼­  
        µ¥ÀÌÅ͸¦ ±³È¯ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº pipe_clÀÇ ÄÚµå´Ù. 
        <screen> 
#include <unistd.h> 
#include <stdio.h> 
 
int main() 
{ 
    int num; 
    while(1) 
    { 
        read(0, (void *)&num, 4); 
        num++; 
        write(0, (void *)&num, 4); 
        sleep(1); 
    } 
} 
        </screen> 
    </para> 
</section> 
</chapter> 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.