{"id":48,"date":"2010-04-17T21:27:03","date_gmt":"2010-04-18T06:27:03","guid":{"rendered":"\/blog\/?p=48"},"modified":"2023-09-21T09:41:22","modified_gmt":"2023-09-21T00:41:22","slug":"unix-domain-socket%ec%9d%84-%ec%9d%b4%ec%9a%a9%ed%95%9c-ipc","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=48","title":{"rendered":"Unix Domain Socket\uc744 \uc774\uc6a9\ud55c IPC"},"content":{"rendered":"\n<TABLE border=0 cellSpacing=1 cellPadding=3 width=\"100%\">\n<TBODY>\n<TR>\n<TD bgColor=#ffffff><B>Unix Domain Socket\uc744 \uc774\uc6a9\ud55c IPC<\/B><br \/><FONT class=tiny>Posted on 2002\/4\/7 <br \/>Topic: <a class=\"con_link\" href=\"http:\/\/joinc.co.kr\/modules.php?name=Search&amp;query=&amp;topic=31&amp;author=\" target=\"_blank\" _cssquery_UID=\"41\" rel=\"noopener\"><U><FONT color=#0000ff>\uc2dc\uc2a4\ud15c \ud504\ub85c\uadf8\ub7a8<\/FONT><\/U><\/A> <\/FONT><\/TD><\/TR>\n<TR>\n<TD bgColor=#ffffff><!-- % meta % --><!-- Accept ROBOT --><!-- % link % --><B><a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/article_UNIX%20%B5%B5%B8%DE%C0%CE%BC%D2%C4%CF%C0%BB%20%C0%CC%BF%EB%C7%D1%20IPC\" target=\"_blank\" _cssquery_UID=\"40\" rel=\"noopener\"><U><FONT color=#0000ff>article_UNIX \ub3c4\uba54\uc778\uc18c\ucf13\uc744 \uc774\uc6a9\ud55c IPC<\/FONT><\/U><\/A>\uc704\ud0a4 \ud648\uc73c\ub85c<\/B><br \/><br \/>\n<DIV>Unix Domain Socket(\uc774\ud558 UDS) \ub294 socket API\ub97c \uc218\uc815\uc5c6\uc774 \uc774\uc6a9\uba70, port \uae30\ubc18\uc758 Inernet Domain Socket\uc5d0 \ube44\ud574\uc11c \ub85c\uceec \uc2dc\uc2a4\ud15c\uc758 \ud30c\uc77c\uc2dc\uc2a4\ud15c\uc744 \uc774\uc6a9\ud574\uc11c \ub0b4\ubd80\ud504\ub85c\uc138\uc2a4\uac04\uc758 \ud1b5\uc2e0\uc744 \uc704\ud574 \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uc810\uc774 \ub2e4\ub974\ub2e4\uace0 \ud560\uc218 \uc788\ub2e4. <br \/><br \/>ls \ub97c \uc774\uc6a9\ud574\uc11c \ud1b5\uc2e0\uc744 \uc704\ud574\uc11c \ub9cc\ub4e4\uc5b4\uc9c4 \ud30c\uc77c\uc744 \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ubaa8\uc2b5\uc744 \ubcf4\uc778\ub2e4. \n<TABLE width=\"100%\">\n<TBODY>\n<TR>\n<TD bgColor=#e0e0e0><PRE>[yundream@localhost tmp]$ ls -al\nsrwx------    1 root     nobody          0 12\uc6d4 14 21:16 .fam_socket\n<\/PRE><\/TD><\/TR><\/TBODY><\/TABLE>\ubcf4\uba74 \ud30c\uc77c\ud0c0\uc785\uc5d0 \"s\" \uac00 \ubd99\uc5b4 \uc788\ub294\uac78 \uc54c\uc218 \uc788\uc73c\uba70, \ud30c\uc77c\uc0ac\uc774\uc988\uac00 0\uc73c\ub85c \ub418\uc5b4 \uc788\ub294 \uac78 \uc54c\uc218 \uc788\ub2e4. \uc65c\ub0d0\ud558\uba74 FIFO\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c \uba54\uc2dc\uc9c0\uac00 \ud30c\uc77c\ub85c \uc313\uc774\uc9c0 \uc54a\uace0 \ucee4\ub110\ub85c \uc804\ub2ec\ub418\uc5b4\uc11c \ucee4\ub110\uc5d0\uc11c \ucc98\ub9ac\ud558\uae30 \ub54c\ubb38\uc774\ub2e4.<br \/><br \/>\ud30c\uc77c\uc744 \ud1b5\ud574\uc11c \ud1b5\uc2e0\uc744 \ud558\uba70, \ucee4\ub110\ub0b4\ubd80\uc5d0\uc11c \uba54\uc2dc\uc9c0\ub97c \uad00\ub9ac\ud55c\ub2e4\ub294 \uc810\uc5d0\uc11c FIFO\uc640 \ub9e4\uc6b0 \uc720\uc0ac\ud55c\uba74\uc744 \ubcf4\uc5ec\uc8fc\uc9c0\ub9cc, FIFO\uc640\ub294 \ub2ec\ub9ac \uc591\ubc29\ud5a5 \ud1b5\uc2e0\uc774 \uac00\ub2a5\ud558\ub2e4\ub294 \ud2b9\uc9d5\uc744 \uac00\uc9c0\uace0 \uc788\ub2e4. \uadf8\ub7ec\ubbc0\ub85c \ub2e4\uc911\uc758 \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \ubc1b\uc544\ub4e4\uc774\ub294 \uc11c\ubc84\/\ud074\ub77c\uc774\uc5b8\ud2b8 \ubaa8\ub378\uc744 \ub9cc\ub4e4\uae30\uac00 \ub9e4\uc6b0 \uc27d\ub2e4.<br \/>\ub610\ud55c Inet \uc18c\ucf13\uc744 \ud1b5\ud55c \uc678\ubd80\ud1b5\uc2e0\uc5d0 \ube44\ud574\uc11c 2\ubc30 \uc774\uc0c1\uc758 \ud6a8\uc728\uc744 \ubcf4\uc5ec\uc900\ub2e4\ub77c\ub294 \uc7a5\uc810\uc744 \uac00\uc9c0\uace0 \uc788\ub2e4. <br \/><br \/>\ub9ce\uc740 \uacbd\uc6b0 \uc57d\uac04 \ubcf5\uc7a1\ud55c \ub0b4\ubd80\ud504\ub85c\uc138\uc2a4\uac04 \ud1b5\uc2e0\uc744 \ud574\uc57c\ub41c\ub2e4\uace0 \ud588\uc744\ub54c UDS\uc744 \ub9ce\uc774 \uc0ac\uc6a9\ud55c\ub2e4. INET \uacc4\uce35\uc5d0\uc11c\uc758 \ud1b5\uc2e0\uc774 TCP\/IP 4\uacc4\uce35\uc744 \ubaa8\ub450 \uac70\uce58\ub294\uac83\uacfc\ub294 \ub2e4\ub974\uac8c, UDS \uc740 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \uacc4\uce35\uc5d0\uc11c TCP \uacc4\uce35\uae4c\uc9c0\ub9cc \uba54\uc2dc\uc9c0\uac00 \uc804\ub2ec\ub418\uace0, \ub2e4\uc2dc \uace7\ubc14\ub85c \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \uacc4\uce35\uc73c\ub85c \uba54\uc2dc\uc9c0\uac00 \uc62c\ub77c\uac00\uac8c \ub41c\ub2e4. TCP\/IP \uacc4\uce35\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/article.php?sid=33\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>TCP\/IP \uac1c\uc694(2)<\/FONT><\/U><\/A>\ub97c \ucc38\uace0 \ud558\uae30 \ubc14\ub780\ub2e4.<br \/><br \/>\uc704\uc5d0\uc11c INET \uc18c\ucf13\ubcf4\ub2e4 2\ubc30\uc774\uc0c1\uc758 \ud6a8\uc728\uc744 \uac00\uc9c4\ub2e4\uace0 \ud588\ub294\ub370, 4\uacc4\uce35\uc758 \ub808\uc774\uc5b4\ub97c \ubaa8\ub450 \uac70\uccd0\uc57c\ud558\ub294 INET \uc18c\ucf13\uc5d0 \ube44\ud574\uc11c \ub2e8\uc9c0 2\uac1c\uc758 \ub808\uc774\uc5b4\ub9cc \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uc810\ub3c4 \uadf8 \uc774\uc720\uc911 \ud558\ub098\ub85c \uc791\uc6a9\ud55c\ub2e4.<br \/><br \/>\uc3d8\uc4f0 \ucf54\ub4dc\ub294 <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules.php?name=News&amp;file=article&amp;sid=20\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>\ub2e4\uc911\uc5f0\uacb0\uc11c\ubc84 \ub9cc\ub4e4\uae30(1)<\/FONT><\/U><\/A>\uc758 zipcode_multi.c \uc640 <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/article.php?sid=11\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>\uc148\ud50c\ub85c \uc54c\uc544\ubcf4\ub294 \uc18c\ucf13\ud504\ub85c\uadf8\ub798\ubc0d(1)<\/FONT><\/U><\/A>\uc758 zipcode_cli.c \ub97c \uc0ac\uc6a9\ud558\ub3c4\ub85d\ud560\uac83\uc774\ub2e4.<br \/><br \/><B>\uc608\uc81c: zipcode_local.c<\/B> \n<TABLE width=\"100%\">\n<TBODY>\n<TR>\n<TD bgColor=#e0e0e0><PRE><FONT color=#00b800>#include<\/FONT> &lt;sys\/types.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;sys\/stat.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;sys\/socket.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;sys\/un.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;unistd.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;stdio.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;stdlib.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;string.h&gt; \n\n<B><FONT color=#0000ff>int<\/FONT><\/B> main(<B><FONT color=#0000ff>int<\/FONT><\/B> argc, <B><FONT color=#0000ff>char<\/FONT><\/B> **argv)\n{\n    <B><FONT color=#0000ff>int<\/FONT><\/B> server_sockfd, client_sockfd;\n    <B><FONT color=#0000ff>int<\/FONT><\/B> state, client_len;\n    pid_t pid;\n\n    FILE *fp;\n    <B><FONT color=#0000ff>struct<\/FONT><\/B> sockaddr_un clientaddr, serveraddr;\n\n    <B><FONT color=#0000ff>char<\/FONT><\/B> buf[<FONT color=#a900a9>255<\/FONT>];\n    <B><FONT color=#0000ff>char<\/FONT><\/B> line[<FONT color=#a900a9>255<\/FONT>];\n\n    <B><FONT color=#0000ff>if<\/FONT><\/B> (argc != <FONT color=#a900a9>2<\/FONT>)\n    {\n        printf(<FONT color=#ff0000>\"Usage : .\/zipcode [file_name]\\n\"<\/FONT>);\n        printf(<FONT color=#ff0000>\"\uc608    : .\/zipcode \/tmp\/mysocket\\n\"<\/FONT>); \n        exit(<FONT color=#a900a9>0<\/FONT>);\n    }\n\n    memset(line, '<FONT color=#a900a9>0<\/FONT>', <FONT color=#a900a9>255<\/FONT>);\n    state = <FONT color=#a900a9>0<\/FONT>;\n\n    <B><FONT color=#0000ff>if<\/FONT><\/B> (access(argv[<FONT color=#a900a9>1<\/FONT>], F_OK) == <FONT color=#a900a9>0<\/FONT>)\n    {\n        unlink(argv[<FONT color=#a900a9>1<\/FONT>]);\n    }\n    \/\/ \uc8fc\uc18c \ud30c\uc77c\uc744 \uc77d\uc5b4\ub4e4\uc778\ub2e4. \n    client_len = <B><FONT color=#0000ff>sizeof<\/FONT><\/B>(clientaddr);\n    <B><FONT color=#0000ff>if<\/FONT><\/B>((fp = fopen(<FONT color=#ff0000>\"zipcode.txt\"<\/FONT>, <FONT color=#ff0000>\"r\"<\/FONT>)) == NULL)\n    {\n        perror(<FONT color=#ff0000>\"file open error : \"<\/FONT>);\n        exit(<FONT color=#a900a9>0<\/FONT>);\n    }\n\n    \/\/ internet \uae30\ubc18\uc758 \uc2a4\ud2b8\ub9bc \uc18c\ucf13\uc744 \ub9cc\ub4e4\ub3c4\ub85d \ud55c\ub2e4. \n    <B><FONT color=#0000ff>if<\/FONT><\/B> ((server_sockfd = socket(AF_UNIX, SOCK_STREAM, <FONT color=#a900a9>0<\/FONT>)) &lt; <FONT color=#a900a9>0<\/FONT>)\n    {\n        perror(<FONT color=#ff0000>\"socket error : \"<\/FONT>);\n        exit(<FONT color=#a900a9>0<\/FONT>);\n    }\n    bzero(&amp;serveraddr, <B><FONT color=#0000ff>sizeof<\/FONT><\/B>(serveraddr));\n    serveraddr.sun_family = AF_UNIX;\n    strcpy(serveraddr.sun_path, argv[<FONT color=#a900a9>1<\/FONT>]);\n\n\n    state = bind(server_sockfd , (<B><FONT color=#0000ff>struct<\/FONT><\/B> sockaddr *)&amp;serveraddr, \n            <B><FONT color=#0000ff>sizeof<\/FONT><\/B>(serveraddr));\n    <B><FONT color=#0000ff>if<\/FONT><\/B> (state == -<FONT color=#a900a9>1<\/FONT>)\n    {\n        perror(<FONT color=#ff0000>\"bind error : \"<\/FONT>);\n        exit(<FONT color=#a900a9>0<\/FONT>);\n    }\n\n    state = listen(server_sockfd, <FONT color=#a900a9>5<\/FONT>);\n    <B><FONT color=#0000ff>if<\/FONT><\/B> (state == -<FONT color=#a900a9>1<\/FONT>)\n    {\n        perror(<FONT color=#ff0000>\"listen error : \"<\/FONT>);\n        exit(<FONT color=#a900a9>0<\/FONT>);\n    }\n\n\n    printf(<FONT color=#ff0000>\"accept : \\n\"<\/FONT>);\n    <B><FONT color=#0000ff>while<\/FONT><\/B>(<FONT color=#a900a9>1<\/FONT>)\n    {\n        client_sockfd = accept(server_sockfd, (<B><FONT color=#0000ff>struct<\/FONT><\/B> sockaddr *)&amp;clientaddr, \n                               &amp;client_len);\n        printf(<FONT color=#ff0000>\"test test\\n\"<\/FONT>);\n        pid = <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/function_fork()\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>fork<\/FONT><\/U><\/A>();\n        <B><FONT color=#0000ff>if<\/FONT><\/B> (pid == <FONT color=#a900a9>0<\/FONT>)\n        {\n            <B><FONT color=#0000ff>if<\/FONT><\/B> (client_sockfd == -<FONT color=#a900a9>1<\/FONT>)\n            {\n                perror(<FONT color=#ff0000>\"Accept error : \"<\/FONT>);\n                exit(<FONT color=#a900a9>0<\/FONT>);\n            }\n            <B><FONT color=#0000ff>while<\/FONT><\/B>(<FONT color=#a900a9>1<\/FONT>)\n            {\n                memset(buf, '<FONT color=#a900a9>0<\/FONT>', <FONT color=#a900a9>255<\/FONT>);\n                <B><FONT color=#0000ff>if<\/FONT><\/B> (read(client_sockfd, buf, <FONT color=#a900a9>255<\/FONT>) &lt;= <FONT color=#a900a9>0<\/FONT>)\n                {\n                    <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/function_close(client_sockfd)\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>close<\/FONT><\/U><\/A>(client_sockfd);\n                    <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/function_fclose(fp)\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>fclose<\/FONT><\/U><\/A>(fp);\n                    exit(<FONT color=#a900a9>0<\/FONT>);\n                }\n\n                <B><FONT color=#0000ff>if<\/FONT><\/B> (strncmp(buf, <FONT color=#ff0000>\"quit\"<\/FONT>,<FONT color=#a900a9>4<\/FONT>) == <FONT color=#a900a9>0<\/FONT>)\n                {\n                    write(client_sockfd, <FONT color=#ff0000>\"bye bye\\n\"<\/FONT>, <FONT color=#a900a9>8<\/FONT>);  \n                    <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/function_close(client_sockfd)\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>close<\/FONT><\/U><\/A>(client_sockfd);\n                    <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/function_fclose(fp)\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>fclose<\/FONT><\/U><\/A>(fp);\n                    <B><FONT color=#0000ff>break<\/FONT><\/B>;\n                }\n\n                <B><FONT color=#0000ff>while<\/FONT><\/B>(fgets(line,<FONT color=#a900a9>255<\/FONT>,fp) != NULL)\n                {\n                    <B><FONT color=#0000ff>if<\/FONT><\/B> (<a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/function_strstr(line,%20buf)\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>strstr<\/FONT><\/U><\/A>(line, buf) != NULL)\n                        write(client_sockfd, line, <FONT color=#a900a9>255<\/FONT>);\n                    memset(line, '<FONT color=#a900a9>0<\/FONT>', <FONT color=#a900a9>255<\/FONT>);\n                }\n                write(client_sockfd, <FONT color=#ff0000>\"end\"<\/FONT>, <FONT color=#a900a9>255<\/FONT>);\n                printf(<FONT color=#ff0000>\"send end\\n\"<\/FONT>);\n                <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/function_rewind(fp)\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>rewind<\/FONT><\/U><\/A>(fp);\n            }\n        }\n    }\n    <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/function_close(client_sockfd)\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>close<\/FONT><\/U><\/A>(client_sockfd);\n}\n<\/PRE><\/TD><\/TR><\/TBODY><\/TABLE><br \/><br \/>\ub2e4\uc74c\uc740 \ud074\ub77c\uc774\uc5b8\ud2b8 \ud504\ub85c\uadf8\ub7a8\uc774\ub2e4.<br \/><B>\uc608\uc81c: zipcode_cli_local.c<\/B> \n<TABLE width=\"100%\">\n<TBODY>\n<TR>\n<TD bgColor=#e0e0e0><PRE><FONT color=#00b800>#include<\/FONT> &lt;sys\/types.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;sys\/stat.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;sys\/socket.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;unistd.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;sys\/un.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;stdio.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;stdlib.h&gt; \n<FONT color=#00b800>#include<\/FONT> &lt;string.h&gt; \n\n\n<B><FONT color=#0000ff>int<\/FONT><\/B> main(<B><FONT color=#0000ff>int<\/FONT><\/B> argc, <B><FONT color=#0000ff>char<\/FONT><\/B> **argv)\n{\n\n    <B><FONT color=#0000ff>int<\/FONT><\/B> client_len;\n    <B><FONT color=#0000ff>int<\/FONT><\/B> client_sockfd;\n\n    FILE *fp_in;\n    <B><FONT color=#0000ff>char<\/FONT><\/B> buf_in[<FONT color=#a900a9>255<\/FONT>];\n    <B><FONT color=#0000ff>char<\/FONT><\/B> buf_get[<FONT color=#a900a9>255<\/FONT>];\n\n    <B><FONT color=#0000ff>struct<\/FONT><\/B> sockaddr_un clientaddr;\n\n    <B><FONT color=#0000ff>if<\/FONT><\/B> (argc != <FONT color=#a900a9>2<\/FONT>)\n    {       \n        printf(<FONT color=#ff0000>\"Usage : .\/zipcode_cl [file_name]\\n\"<\/FONT>);\n        printf(<FONT color=#ff0000>\"\uc608    : .\/zipcode_cl \/tmp\/mysocket\\n\"<\/FONT>);\n        exit(<FONT color=#a900a9>0<\/FONT>);\n    }       \n\n\n    client_sockfd = socket(AF_UNIX, SOCK_STREAM, <FONT color=#a900a9>0<\/FONT>);\n    <B><FONT color=#0000ff>if<\/FONT><\/B> (client_sockfd == -<FONT color=#a900a9>1<\/FONT>)\n    {\n        perror(<FONT color=#ff0000>\"error : \"<\/FONT>);\n        exit(<FONT color=#a900a9>0<\/FONT>);\n    }\n    bzero(&amp;clientaddr, <B><FONT color=#0000ff>sizeof<\/FONT><\/B>(clientaddr));\n    clientaddr.sun_family = AF_UNIX;\n    strcpy(clientaddr.sun_path, argv[<FONT color=#a900a9>1<\/FONT>]);\n    client_len = <B><FONT color=#0000ff>sizeof<\/FONT><\/B>(clientaddr);\n    <B><FONT color=#0000ff>if<\/FONT><\/B> (connect(client_sockfd, (<B><FONT color=#0000ff>struct<\/FONT><\/B> sockaddr *)&amp;clientaddr, client_len) &lt; <FONT color=#a900a9>0<\/FONT>)\n    {\n        perror(<FONT color=#ff0000>\"Connect error: \"<\/FONT>);\n        exit(<FONT color=#a900a9>0<\/FONT>);\n    }\n    <B><FONT color=#0000ff>while<\/FONT><\/B>(<FONT color=#a900a9>1<\/FONT>)\n    {\n        printf(<FONT color=#ff0000>\"\uc9c0\uc5ed\uc774\ub984 \uc785\ub825 : \"<\/FONT>);\n        fgets(buf_in, <FONT color=#a900a9>255<\/FONT>,stdin);\n\n        buf_in[<a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/function_strlen(buf_in)\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>strlen<\/FONT><\/U><\/A>(buf_in) - <FONT color=#a900a9>1<\/FONT>] = '<FONT color=#a900a9>0<\/FONT>';\n        write(client_sockfd, buf_in, <FONT color=#a900a9>255<\/FONT>);\n        <B><FONT color=#0000ff>if<\/FONT><\/B> (strncmp(buf_in, <FONT color=#ff0000>\"quit\"<\/FONT>, <FONT color=#a900a9>4<\/FONT>) == <FONT color=#a900a9>0<\/FONT>)\n        {\n            <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/function_close(client_sockfd)\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>close<\/FONT><\/U><\/A>(client_sockfd);\n            exit(<FONT color=#a900a9>0<\/FONT>);\n        }\n        <B><FONT color=#0000ff>while<\/FONT><\/B>(<FONT color=#a900a9>1<\/FONT>)\n        {\n            read(client_sockfd, buf_get, <FONT color=#a900a9>255<\/FONT>); \n            <B><FONT color=#0000ff>if<\/FONT><\/B> (strncmp(buf_get, <FONT color=#ff0000>\"end\"<\/FONT>, <FONT color=#a900a9>3<\/FONT>) == <FONT color=#a900a9>0<\/FONT>)\n                <B><FONT color=#0000ff>break<\/FONT><\/B>;\n\n            printf(<FONT color=#ff0000>\"%s\"<\/FONT>, buf_get);\n        }\n    }\n\n    <a class=\"con_link\" href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/function_close(client_sockfd)\" target=\"_blank\" rel=\"noopener\"><U><FONT color=#0000ff>close<\/FONT><\/U><\/A>(client_sockfd);\n    exit(<FONT color=#a900a9>0<\/FONT>);\n}\n<\/PRE><\/TD><\/TR><\/TBODY><\/TABLE><br \/><br \/>\uae30\uc874\uc758 INET \ubc84\uc83c\uc758 \ud504\ub85c\uadf8\ub7a8\uacfc \ube44\uad50\ud574 \ubcf4\uba74 \uace0\uc791 3\uc904 \uc815\ub3c4\ub9cc \uc218\uc815\ub418\uc5c8\uc74c\uc744 \uc54c\uc218 \uc788\uc744\uac83\uc774\ub2e4. \ub2e8\uc9c0 \uc18c\ucf13 \uad6c\uc870\uccb4\uac00 sockaddr_un \uc73c\ub85c \ubc14\ub00c\uace0, AF_INET \ub300\uc2e0 AF_UNIX \ub97c \uadf8\ub9ac\uace0 port \ubc88\ud638\ub300\uc2e0\uc5d0 \ud30c\uc77c\uba85\uc744 \uc0ac\uc6a9\ud588\uc74c\uc744 \uc54c\uc218 \uc788\ub2e4.<br \/><br \/>\ub098\uba38\uc9c0\uc758 \ubaa8\ub4e0 \ucf54\ub4dc\ub294 INET \ucf54\ub4dc\uc640 \uc644\uc804\ud788 \uac19\ub2e4. \uadf8\ub7ec\ubbc0\ub85c Unix Domain Socket \ub97c \uc0ac\uc6a9\ud558\uba74 Inet Domain Socket \uc640 \ucf54\ub4dc \uc77c\uad00\uc131\uc744 \uc720\uc9c0\ud560\uc218 \uc788\uc73c\uba70, \ub3d9\uc77c\ud55c \uae30\uc220\uc744 \uc0ac\uc6a9\ud574\uc11c \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \ud560\uc218 \uc788\ub2e4. <br \/><br \/>\ub610\ud55c \ub2e4\ub978 \ub300\ubd80\ubd84\uc758 IPC \uc124\ube44\ub4e4\uc774, \ubc94\uc6a9\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\uae30\uc5d0\ub294 \ubd80\uc871\ud55c \uc5ec\ub7ec\uac00\uc9c0 \ub2e8\uc810\ub4e4\uc744 \uac00\uc9c4\ubc18\uba74(\ub2e8\ubc29\ud5a5 \uc774\uac70\ub098, \uc77d\uae30\ub9cc \uac00\ub2a5\ud558\ub2e4\uac70\ub098, \uc81c\uc5b4\ud558\uae30\uac00 \uc5b4\ub824\uc6b4) UDS\ub294 \ub9e4\uc6b0 \ubc94\uc6a9\uc801\uc778 IPC \ub85c\uc368 \uc0ac\uc6a9\uac00\ub2a5\ud558\ub2e4\ub77c\ub294 \uc7a5\uc810\uc744 \uac00\uc9c0\uace0 \uc788\ub2e4.<br \/><br \/>\uc2e4\uc81c\ub85c X \uc11c\ubc84 \uac19\uc740\uacbd\uc6b0\uc5d0 \uc678\ubd80\uc5d0\uc11c\uc758 \uc811\uadfc\uc2dc\uc5d0\ub294 INET \uc5f0\uacb0\uc744 \ub0b4\ubd80\uc5d0\uc11c\uc758 \uc5f0\uacb0\uc744 \uc704\ud574\uc11c\ub294 UDS \ub97c \uc0ac\uc6a9\ud55c\ub2e4. \uc774\ubc16\uc5d0\ub3c4 mysql, pgsql, KDE, Gnome \uacfc \uac19\uc740 \ub300\ubd80\ubd84\uc758 \uc11c\ubc84\ud504\ub85c\uadf8\ub7a8\uc774 \ub0b4\ubd80\ud1b5\uc2e0\uc744 \uc704\ud574\uc11c UDS \ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/DIV><\/TD><\/TR><\/TBODY><\/TABLE>\n<P>&nbsp;<\/P>\n<P>[\ud38c] <a class=\"con_link\" href=\"http:\/\/blog.naver.com\/kopidat?Redirect=Log&amp;logNo=40005289606\" target=\"_blank\" rel=\"noopener\">http:\/\/blog.naver.com\/kopidat?Redirect=Log&amp;logNo=40005289606 <\/A><\/P>\n","protected":false},"excerpt":{"rendered":"<p>Unix Domain Socket\uc744 \uc774\uc6a9\ud55c IPCPosted on 2002\/4\/7 Topic: \uc2dc\uc2a4\ud15c \ud504\ub85c\uadf8\ub7a8 article_UNIX \ub3c4\uba54\uc778\uc18c\ucf13\uc744 \uc774\uc6a9\ud55c IPC\uc704\ud0a4 \ud648\uc73c\ub85c Unix Domain Socket(\uc774\ud558 UDS) \ub294 socket API\ub97c \uc218\uc815\uc5c6\uc774 \uc774\uc6a9\uba70, port \uae30\ubc18\uc758 Inernet Domain Socket\uc5d0 \ube44\ud574\uc11c \ub85c\uceec \uc2dc\uc2a4\ud15c\uc758 \ud30c\uc77c\uc2dc\uc2a4\ud15c\uc744 \uc774\uc6a9\ud574\uc11c \ub0b4\ubd80\ud504\ub85c\uc138\uc2a4\uac04\uc758 \ud1b5\uc2e0\uc744 \uc704\ud574 \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uc810\uc774 \ub2e4\ub974\ub2e4\uace0 \ud560\uc218 \uc788\ub2e4. ls \ub97c \uc774\uc6a9\ud574\uc11c \ud1b5\uc2e0\uc744 \uc704\ud574\uc11c \ub9cc\ub4e4\uc5b4\uc9c4 \ud30c\uc77c\uc744 \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ubaa8\uc2b5\uc744 \ubcf4\uc778\ub2e4. [yundream@localhost [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[22],"tags":[],"class_list":["post-48","post","type-post","status-publish","format-standard","hentry","category-development_unix"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/48","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=48"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/48\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}