linux man page : socketpair - ¿¬°áµÈ ¼ÒÄϽÖÀ» »ý¼ºÇÑ´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

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



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


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

1장. socketpair(2)

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

¿¬°áµÈ ¼ÒÄÏ ½ÖÀ» »ý¼ºÇÑ´Ù.


1.1절. »ç¿ë¹ý

#include <sys/types.h>
#include <sys/socket.h>

int socketpair(int d, int type, int protocol, int sv[2]);
		


1.2절. ¼³¸í

socketpair()Àº ¿É¼ÇÀ¸·Î d¿µ¿ª(domain)À» °¡Áö¸ç protocolÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ´Â typeÀÇ ¼ÒÄÏ ½ÖÀ» »ý¼ºÇÑ´Ù. »ý¼ºµÈ ¼ÒÄÏ ½ÖÀº sv¸¦ ÅëÇØ¼­ ³Ñ¾î¿Â´Ù. µÎ°³ÀÇ ¼ÒÄÏÀº ¼­·Î ±¸º°ÇÒ ¼ö ¾ø´Ù.

º¸Åë ºÎ¸ð ÀÚ½Ä ÇÁ·Î¼¼½º°£ ³»ºÎ Åë½Å(IPC)¸¦ À§Çؼ­ »ç¿ëÇÑ´Ù. ¼ÒÄÏÀ̹ǷΠ¾ç¹æÇâ(Àаí/¾²±â) Åë½ÅÀÌ °¡´ÉÇÏ´Ù.


1.3절. ¹Ýȯ°ª

¼º°ø½Ã 0À» ¹ÝȯÇÏ°í ½ÇÆÐÇÒ °æ¿ì -1À» ¹ÝȯÇÑ´Ù.


1.4절. ¿¡·¯

EMFILE

³Ê¹« ¸¹Àº ÆÄÀÏÀÌ ¿­·ÁÀ־ ´õÀÌ»ó ¼ÒÄÏÀ» »ý¼ºÇÒ ¼ö ¾ø´Ù.

EAFNOSUPPORT

ÁöÁ¤ÇÑ ÁÖ¼Ò ÁöÁ¤¹æ½ÄÀÌ Áö¿øµÇÁö ¾Ê´Â´Ù.

EPROTONOSUPPORT

ÁöÁ¤µÈ ÇÁ·ÎÅäÄÝÀÌ Áö¿øµÇÁö ¾Ê´Â´Ù.

EFAULT

ÁÖ¼Ò ev°¡ ÇÁ·Î¼¼½º ÁÖ¼Ò °ø°£ÀÇ À¯È¿ÇÑ ºÎºÐÀ» °¡¸®Å°Áö ¾Ê´Â´Ù.


1.5절. ¿¹Á¦

#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);
        }
    }
}
		
À§ ÇÁ·Î±×·¥Àº fork()ÇÑ ÈÄ ÀÚ½ÄÇÁ·Î¼¼½º¿¡¼­ pipe_clÀ» ½ÇÇà½ÃŲ´Ù. Àڽİú ºÎ¸ð ÇÁ·Î¼¼½º´Â ¼ÒÄÏÀ» ÅëÇÏ¿© ¿¬°áµÇ°í À̰ÍÀ» ÅëÇØ¼­ µ¥ÀÌÅ͸¦ ±³È¯ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº pipe_clÀÇ ÄÚµå´Ù.
#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);
    }
}
		

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