<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>공간사랑</title>
    <link>https://uple.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 9 Apr 2026 21:26:25 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>공간사랑</managingEditor>
    <image>
      <title>공간사랑</title>
      <url>https://tistory1.daumcdn.net/tistory/115177/attach/1d4aa3e26a4c468c8d4e3672e1094744</url>
      <link>https://uple.tistory.com</link>
    </image>
    <item>
      <title>socket pthread</title>
      <link>https://uple.tistory.com/2899</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;stdlib.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;unistd.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;pthread.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;netinet/in.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;sys/socket.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;sys/time.h&amp;gt; &lt;br /&gt;&lt;br /&gt;#define&amp;nbsp;PORT&amp;nbsp;9090 &lt;br /&gt;#define&amp;nbsp;BUFFER_SIZE&amp;nbsp;1024 &lt;br /&gt;&lt;br /&gt;int&amp;nbsp;server_fd,&amp;nbsp;client_socket; &lt;br /&gt;struct&amp;nbsp;sockaddr_in&amp;nbsp;address; &lt;br /&gt;socklen_t&amp;nbsp;addr_len&amp;nbsp;=&amp;nbsp;sizeof(address); &lt;br /&gt;&lt;br /&gt;void&amp;nbsp;timer_handler(int&amp;nbsp;sig)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;Timer&amp;nbsp;triggered!\n&quot;); &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;void*&amp;nbsp;listen_thread(void*&amp;nbsp;arg)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;server_fd&amp;nbsp;=&amp;nbsp;socket(AF_INET,&amp;nbsp;SOCK_STREAM,&amp;nbsp;0); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;opt&amp;nbsp;=&amp;nbsp;1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setsockopt(server_fd,&amp;nbsp;SOL_SOCKET,&amp;nbsp;SO_REUSEADDR&amp;nbsp;|&amp;nbsp;SO_REUSEPORT,&amp;nbsp;&amp;amp;opt,&amp;nbsp;sizeof(opt)); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;address.sin_family&amp;nbsp;=&amp;nbsp;AF_INET; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;address.sin_addr.s_addr&amp;nbsp;=&amp;nbsp;INADDR_ANY; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;address.sin_port&amp;nbsp;=&amp;nbsp;htons(PORT); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bind(server_fd,&amp;nbsp;(struct&amp;nbsp;sockaddr*)&amp;amp;address,&amp;nbsp;sizeof(address)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listen(server_fd,&amp;nbsp;3); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;Listening&amp;nbsp;on&amp;nbsp;port&amp;nbsp;%d...\n&quot;,&amp;nbsp;PORT); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;client_socket&amp;nbsp;=&amp;nbsp;accept(server_fd,&amp;nbsp;(struct&amp;nbsp;sockaddr*)&amp;amp;address,&amp;nbsp;&amp;amp;addr_len); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;Client&amp;nbsp;connected!\n&quot;); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;NULL; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;void*&amp;nbsp;recv_thread(void*&amp;nbsp;arg)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;buffer[BUFFER_SIZE]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;(1)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(buffer,&amp;nbsp;0,&amp;nbsp;BUFFER_SIZE); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;valread&amp;nbsp;=&amp;nbsp;recv(client_socket,&amp;nbsp;buffer,&amp;nbsp;BUFFER_SIZE,&amp;nbsp;0); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(valread&amp;nbsp;&amp;gt;&amp;nbsp;0)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;Received:&amp;nbsp;%s\n&quot;,&amp;nbsp;buffer); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;NULL; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;void*&amp;nbsp;send_thread(void*&amp;nbsp;arg)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;msg[BUFFER_SIZE]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;(1)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;Enter&amp;nbsp;message:&amp;nbsp;&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fgets(msg,&amp;nbsp;BUFFER_SIZE,&amp;nbsp;stdin); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;send(client_socket,&amp;nbsp;msg,&amp;nbsp;strlen(msg),&amp;nbsp;0); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;NULL; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;void&amp;nbsp;start_timer()&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;itimerval&amp;nbsp;timer; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;signal(SIGALRM,&amp;nbsp;timer_handler); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;timer.it_value.tv_sec&amp;nbsp;=&amp;nbsp;5;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;First&amp;nbsp;trigger&amp;nbsp;in&amp;nbsp;5&amp;nbsp;seconds &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;timer.it_value.tv_usec&amp;nbsp;=&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;timer.it_interval.tv_sec&amp;nbsp;=&amp;nbsp;5;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Then&amp;nbsp;every&amp;nbsp;5&amp;nbsp;seconds &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;timer.it_interval.tv_usec&amp;nbsp;=&amp;nbsp;0; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setitimer(ITIMER_REAL,&amp;nbsp;&amp;amp;timer,&amp;nbsp;NULL); &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;int&amp;nbsp;main()&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pthread_t&amp;nbsp;listen_tid,&amp;nbsp;send_tid,&amp;nbsp;recv_tid; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Start&amp;nbsp;listener &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pthread_create(&amp;amp;listen_tid,&amp;nbsp;NULL,&amp;nbsp;listen_thread,&amp;nbsp;NULL); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pthread_join(listen_tid,&amp;nbsp;NULL);&amp;nbsp;//&amp;nbsp;Wait&amp;nbsp;until&amp;nbsp;a&amp;nbsp;client&amp;nbsp;connects &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Start&amp;nbsp;other&amp;nbsp;threads &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pthread_create(&amp;amp;recv_tid,&amp;nbsp;NULL,&amp;nbsp;recv_thread,&amp;nbsp;NULL); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pthread_create(&amp;amp;send_tid,&amp;nbsp;NULL,&amp;nbsp;send_thread,&amp;nbsp;NULL); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Start&amp;nbsp;timer &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_timer(); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pthread_join(recv_tid,&amp;nbsp;NULL); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pthread_join(send_tid,&amp;nbsp;NULL); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(server_fd); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0; &lt;br /&gt;} &lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2899</guid>
      <comments>https://uple.tistory.com/2899#entry2899comment</comments>
      <pubDate>Sat, 23 Aug 2025 02:17:15 +0900</pubDate>
    </item>
    <item>
      <title>execve</title>
      <link>https://uple.tistory.com/2898</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;#include&amp;nbsp;&amp;lt;sys/types.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;sys/wait.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;unistd.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;errno.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;stdlib.h&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;void&amp;nbsp;func(char&amp;nbsp;*input) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;pid_t&amp;nbsp;pid; &lt;br /&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;status; &lt;br /&gt;&amp;nbsp;&amp;nbsp;pid_t&amp;nbsp;ret; &lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;*const&amp;nbsp;args[3]&amp;nbsp;=&amp;nbsp;{&quot;any_exe&quot;,&amp;nbsp;input,&amp;nbsp;NULL}; &lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;**env; &lt;br /&gt;&amp;nbsp;&amp;nbsp;extern&amp;nbsp;char&amp;nbsp;**environ; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;...&amp;nbsp;Sanitize&amp;nbsp;arguments&amp;nbsp;...&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;pid&amp;nbsp;=&amp;nbsp;fork(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;if(pid&amp;nbsp;==&amp;nbsp;-1){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Handle&amp;nbsp;error&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if(pid&amp;nbsp;!=&amp;nbsp;0){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;((ret&amp;nbsp;=&amp;nbsp;waitpid(pid,&amp;nbsp;&amp;amp;status,&amp;nbsp;0))&amp;nbsp;==&amp;nbsp;-1){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(errno&amp;nbsp;!=&amp;nbsp;EINTR){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Handle&amp;nbsp;error&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if((ret&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;|| &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!(WIFEXITED(status)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;!WEXITSTATUS(status))){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Report&amp;nbsp;unexpected&amp;nbsp;child&amp;nbsp;status&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;else&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;...&amp;nbsp;Initialize&amp;nbsp;env&amp;nbsp;as&amp;nbsp;a&amp;nbsp;sanitized&amp;nbsp;copy&amp;nbsp;of&amp;nbsp;environ&amp;nbsp;...&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(execve(&quot;/usr/bin/any_cmd&quot;,&amp;nbsp;args,&amp;nbsp;env)&amp;nbsp;==&amp;nbsp;-1){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Handle&amp;nbsp;error&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_Exit(127); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2898</guid>
      <comments>https://uple.tistory.com/2898#entry2898comment</comments>
      <pubDate>Sat, 23 Aug 2025 02:12:52 +0900</pubDate>
    </item>
    <item>
      <title>pre fork read_fd write_fd</title>
      <link>https://uple.tistory.com/2897</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;#include&amp;nbsp;&amp;lt;sys/socket.h&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;#include&amp;nbsp;&amp;lt;sys/types.h&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;#include&amp;nbsp;&amp;lt;netinet/in.h&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;#include&amp;nbsp;&amp;lt;arpa/inet.h&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;#include&amp;nbsp;&amp;lt;sys/stat.h&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;#include&amp;nbsp;&amp;lt;unistd.h&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;#include&amp;nbsp;&amp;lt;unistd.h&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;#include&amp;nbsp;&amp;lt;stdlib.h&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;#define&amp;nbsp;SA&amp;nbsp;struct&amp;nbsp;sockaddr &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;struct&amp;nbsp;_SocketInfo &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;pid; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;fd; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;status; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;}; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;int&amp;nbsp;write_fd(int&amp;nbsp;fd,&amp;nbsp;void&amp;nbsp;*ptr,&amp;nbsp;size_t&amp;nbsp;nbytes,&amp;nbsp;int&amp;nbsp;sendfd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;int&amp;nbsp;prefork_client(int&amp;nbsp;fd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;int&amp;nbsp;read_fd(int&amp;nbsp;fd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;int&amp;nbsp;main_server(int&amp;nbsp;server_sockfd, &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;_SocketInfo&amp;nbsp;*SInfo, &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;sockaddr_in&amp;nbsp;clientaddr, &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;preforknum); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;int&amp;nbsp;main(int&amp;nbsp;argc,&amp;nbsp;char&amp;nbsp;**argv) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;buf_in[80]; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;state; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;clilen; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;n,i,pid; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;preforknum; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;ppid; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;sv[2]; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;_SocketInfo&amp;nbsp;*SocketArray; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;server_sockfd,&amp;nbsp;client_sockfd; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;sockaddr_in&amp;nbsp;clientaddr,&amp;nbsp;serveraddr; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(argc&amp;nbsp;!=&amp;nbsp;2) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&amp;nbsp;&quot;Usage:&amp;nbsp;%s&amp;nbsp;[prefork#]\n&quot;,&amp;nbsp;argv[0]); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;1; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;preforknum&amp;nbsp;=&amp;nbsp;atoi(argv[1]); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((server_sockfd&amp;nbsp;=&amp;nbsp;socket(AF_INET,&amp;nbsp;SOCK_STREAM,&amp;nbsp;0))&amp;nbsp;&amp;lt;&amp;nbsp;0) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;Error&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;1; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bzero(&amp;amp;serveraddr,&amp;nbsp;sizeof(serveraddr)); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serveraddr.sin_family&amp;nbsp;=&amp;nbsp;AF_INET; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serveraddr.sin_addr.s_addr&amp;nbsp;=&amp;nbsp;htonl(INADDR_ANY); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serveraddr.sin_port&amp;nbsp;=&amp;nbsp;htons(8083); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bind(server_sockfd,&amp;nbsp;(SA&amp;nbsp;*)&amp;amp;serveraddr,&amp;nbsp;sizeof(serveraddr)); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((state&amp;nbsp;=&amp;nbsp;listen(server_sockfd,&amp;nbsp;5))&amp;lt;0) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;listen&amp;nbsp;error:&amp;nbsp;&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(0); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(preforknum&amp;nbsp;&amp;gt;&amp;nbsp;10) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&quot;Max&amp;nbsp;preforknum&amp;nbsp;is&amp;nbsp;10\n&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(0); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ppid&amp;nbsp;=&amp;nbsp;getpid(); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Socket&amp;nbsp;Infomation&amp;nbsp;Array &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SocketArray&amp;nbsp;=&amp;nbsp;(void&amp;nbsp;*)malloc(sizeof(struct&amp;nbsp;_SocketInfo)*preforknum); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset((void&amp;nbsp;*)SocketArray,&amp;nbsp;0x00,&amp;nbsp;sizeof(struct&amp;nbsp;_SocketInfo)*preforknum); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;preforknum;&amp;nbsp;i++) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;socketpair(AF_LOCAL,&amp;nbsp;SOCK_STREAM,&amp;nbsp;AF_LOCAL,&amp;nbsp;sv); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pid&amp;nbsp;=&amp;nbsp;fork(); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(pid&amp;nbsp;&amp;lt;&amp;nbsp;0) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;fork&amp;nbsp;error&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(0); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(pid&amp;nbsp;==&amp;nbsp;0) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dup2(sv[0],&amp;nbsp;0); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(sv[1]); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(sv[0]); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(server_sockfd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prefork_client(0); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(sv[0]); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SocketArray[i].pid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;pid; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SocketArray[i].fd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;sv[1]; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SocketArray[i].status&amp;nbsp;=&amp;nbsp;1; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_server(server_sockfd,&amp;nbsp;SocketArray,&amp;nbsp;clientaddr,&amp;nbsp;preforknum); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;int&amp;nbsp;write_fd(int&amp;nbsp;fd,&amp;nbsp;void&amp;nbsp;*ptr,&amp;nbsp;size_t&amp;nbsp;nbytes,&amp;nbsp;int&amp;nbsp;sendfd) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;msghdr msg; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;iovec iov[1]; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;union&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;cmsghdr&amp;nbsp;cm; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;&amp;nbsp;control[CMSG_SPACE(sizeof(int))]; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;control_un; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;cmsghdr&amp;nbsp;*cmptr; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_control&amp;nbsp;=&amp;nbsp;control_un.control; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_controllen&amp;nbsp;=&amp;nbsp;sizeof(control_un.control); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;cmptr&amp;nbsp;=&amp;nbsp;CMSG_FIRSTHDR(&amp;amp;msg); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;cmptr-&amp;gt;cmsg_len&amp;nbsp;=&amp;nbsp;CMSG_LEN(sizeof(int)); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;cmptr-&amp;gt;cmsg_level&amp;nbsp;=&amp;nbsp;SOL_SOCKET; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;cmptr-&amp;gt;cmsg_type&amp;nbsp;=&amp;nbsp;SCM_RIGHTS; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;*((int&amp;nbsp;*)&amp;nbsp;CMSG_DATA(cmptr))&amp;nbsp;=&amp;nbsp;sendfd; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_name&amp;nbsp;=&amp;nbsp;NULL; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_namelen&amp;nbsp;=&amp;nbsp;0; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;iov[0].iov_base&amp;nbsp;=&amp;nbsp;ptr; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;iov[0].iov_len&amp;nbsp;=&amp;nbsp;nbytes; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_iov&amp;nbsp;=&amp;nbsp;iov; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_iovlen&amp;nbsp;=&amp;nbsp;1; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;return(sendmsg(fd,&amp;nbsp;&amp;amp;msg,&amp;nbsp;0)); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;int&amp;nbsp;read_fd(int&amp;nbsp;fd) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;n; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;recvfd; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;ptr; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;iovec&amp;nbsp;iov[1]; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;cmsghdr&amp;nbsp;*cmptr; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;msghdr&amp;nbsp;msg; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;union&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;cmsghdr&amp;nbsp;cm; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;control[CMSG_SPACE(sizeof(int))]; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;control_un; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_control&amp;nbsp;=&amp;nbsp;control_un.control; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_controllen&amp;nbsp;=&amp;nbsp;sizeof(control_un.control); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_name&amp;nbsp;=&amp;nbsp;NULL; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_namelen&amp;nbsp;=&amp;nbsp;0; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;iov[0].iov_base&amp;nbsp;=&amp;nbsp;(void&amp;nbsp;*)&amp;amp;ptr; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;iov[0].iov_len&amp;nbsp;=&amp;nbsp;1; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_iov&amp;nbsp;=&amp;nbsp;iov; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;msg.msg_iovlen&amp;nbsp;=&amp;nbsp;1; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(&amp;nbsp;(n&amp;nbsp;=&amp;nbsp;recvmsg(fd,&amp;nbsp;&amp;amp;msg,&amp;nbsp;0))&amp;nbsp;&amp;lt;=&amp;nbsp;0) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;recvmsg&amp;nbsp;Error&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;-1; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;cmptr&amp;nbsp;=&amp;nbsp;CMSG_FIRSTHDR(&amp;amp;msg); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((cmptr&amp;nbsp;==&amp;nbsp;NULL)) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;CMSG&amp;nbsp;ERROR\n&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;-1; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;recvfd&amp;nbsp;=&amp;nbsp;*((int&amp;nbsp;*)&amp;nbsp;CMSG_DATA(cmptr)); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;recvfd; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;int&amp;nbsp;main_server(int&amp;nbsp;server_sockfd, &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;_SocketInfo&amp;nbsp;*SocketArray, &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;sockaddr_in&amp;nbsp;clientaddr, &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;preforknum) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;clilen; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;client_sockfd; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;ptr; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;n; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;maxfd; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fd_set&amp;nbsp;readfds,&amp;nbsp;allfds; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;data; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FD_ZERO(&amp;amp;readfds); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FD_SET(server_sockfd,&amp;nbsp;&amp;amp;readfds); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;preforknum;&amp;nbsp;i++) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FD_SET(SocketArray[i].fd,&amp;nbsp;&amp;amp;readfds); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;maxfd&amp;nbsp;=&amp;nbsp;SocketArray[i].fd; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;socketpair&amp;nbsp;fd&amp;nbsp;%d\n&quot;,&amp;nbsp;maxfd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;%d\n&quot;,&amp;nbsp;maxfd+1); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;allfds&amp;nbsp;=&amp;nbsp;readfds; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(1) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;readfds&amp;nbsp;=&amp;nbsp;allfds; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;clilen&amp;nbsp;=&amp;nbsp;sizeof(clientaddr); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;select&amp;nbsp;Wait\n&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;n&amp;nbsp;=&amp;nbsp;select(maxfd&amp;nbsp;+&amp;nbsp;1,&amp;nbsp;&amp;amp;readfds,&amp;nbsp;(fd_set&amp;nbsp;*)0,&amp;nbsp;(fd_set&amp;nbsp;*)0,&amp;nbsp;NULL); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;select&amp;nbsp;Wait&amp;nbsp;End&amp;nbsp;%d\n&quot;,&amp;nbsp;n); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(n&amp;nbsp;&amp;lt;&amp;nbsp;0)&amp;nbsp;continue; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(FD_ISSET(server_sockfd,&amp;nbsp;&amp;amp;readfds)) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;ACCEPT\n&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((client_sockfd&amp;nbsp;=&amp;nbsp;accept(server_sockfd,&amp;nbsp;(SA&amp;nbsp;*)&amp;amp;clientaddr,&amp;nbsp;(size_t&amp;nbsp;*)&amp;amp;clilen))&amp;nbsp;==-1) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;accept&amp;nbsp;error:&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(client_sockfd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;preforknum;&amp;nbsp;i++) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(SocketArray[i].status) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;SocketSend&amp;nbsp;pid(%d)&amp;nbsp;-&amp;gt;&amp;nbsp;%d\n&quot;,&amp;nbsp;SocketArray[i].pid,&amp;nbsp;client_sockfd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;write_fd(SocketArray[i].fd,&amp;nbsp;&amp;amp;ptr,&amp;nbsp;1,&amp;nbsp;client_sockfd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SocketArray[i].status&amp;nbsp;=&amp;nbsp;0; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(client_sockfd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i&amp;nbsp;==&amp;nbsp;preforknum) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&amp;nbsp;&quot;max&amp;nbsp;Client&amp;nbsp;error\n&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(client_sockfd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;preforknum;&amp;nbsp;i++) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(FD_ISSET(SocketArray[i].fd,&amp;nbsp;&amp;amp;readfds)) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;OK&amp;nbsp;Chield&amp;nbsp;Data\n&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;read(SocketArray[i].fd,&amp;nbsp;(void&amp;nbsp;*)&amp;amp;data,&amp;nbsp;sizeof(data)); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;(%d)&amp;nbsp;:&amp;nbsp;Read&amp;nbsp;Data&amp;nbsp;%d\n&quot;,&amp;nbsp;SocketArray[i].fd,&amp;nbsp;data); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(data&amp;nbsp;==&amp;nbsp;0) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SocketArray[i].status&amp;nbsp;=&amp;nbsp;1; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;int&amp;nbsp;prefork_client(int&amp;nbsp;fd) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;n; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;buf_in[80]={0x00,}; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;sockfd; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;msg&amp;nbsp;=&amp;nbsp;0; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;printf(&quot;Child&amp;nbsp;PID&amp;nbsp;%d\n&quot;,&amp;nbsp;getpid()); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;while(1) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sockfd&amp;nbsp;=&amp;nbsp;read_fd(fd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(;;) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((n&amp;nbsp;=&amp;nbsp;read(sockfd,&amp;nbsp;buf_in,&amp;nbsp;79))&amp;nbsp;&amp;gt;&amp;nbsp;0) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;write(sockfd,&amp;nbsp;buf_in,&amp;nbsp;strlen(buf_in)); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;Client&amp;nbsp;Socket&amp;nbsp;Close\n&quot;); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;write(fd,&amp;nbsp;(void&amp;nbsp;*)&amp;amp;msg,&amp;nbsp;sizeof(msg)); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(sockfd); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(buf_in,&amp;nbsp;0x00,&amp;nbsp;sizeof(buf_in)); &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;}&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2897</guid>
      <comments>https://uple.tistory.com/2897#entry2897comment</comments>
      <pubDate>Sat, 23 Aug 2025 02:00:26 +0900</pubDate>
    </item>
    <item>
      <title>processes-example-creating-server-that-uses-spawn</title>
      <link>https://uple.tistory.com/2896</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;/***&amp;nbsp;&lt;a href=&quot;https://www.ibm.com/docs/ko/i/7.3.0?topic=processes-example-creating-server-that-uses-spawn&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.ibm.com/docs/ko/i/7.3.0?topic=processes-example-creating-server-that-uses-spawn&lt;/a&gt;&amp;nbsp;***/ &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**************************************************************************/ &lt;br /&gt;/*&amp;nbsp;Application&amp;nbsp;creates&amp;nbsp;an&amp;nbsp;child&amp;nbsp;process&amp;nbsp;using&amp;nbsp;spawn().&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;/**************************************************************************/ &lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;stdlib.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;sys/socket.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;netinet/in.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;spawn.h&amp;gt; &lt;br /&gt;&lt;br /&gt;#define&amp;nbsp;SERVER_PORT&amp;nbsp;&amp;nbsp;12345 &lt;br /&gt;&lt;br /&gt;main&amp;nbsp;(int&amp;nbsp;argc,&amp;nbsp;char&amp;nbsp;*argv[]) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i,&amp;nbsp;num,&amp;nbsp;pid,&amp;nbsp;rc,&amp;nbsp;on&amp;nbsp;=&amp;nbsp;1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listen_sd,&amp;nbsp;accept_sd; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spawn_fdmap[1]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;&amp;nbsp;*spawn_argv[1]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;&amp;nbsp;*spawn_envp[1]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;inheritance&amp;nbsp;&amp;nbsp;&amp;nbsp;inherit; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;sockaddr_in6&amp;nbsp;&amp;nbsp;&amp;nbsp;addr; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;If&amp;nbsp;an&amp;nbsp;argument&amp;nbsp;was&amp;nbsp;specified,&amp;nbsp;use&amp;nbsp;it&amp;nbsp;to&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;control&amp;nbsp;the&amp;nbsp;number&amp;nbsp;of&amp;nbsp;incoming&amp;nbsp;connections&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(argc&amp;nbsp;&amp;gt;=&amp;nbsp;2) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;num&amp;nbsp;=&amp;nbsp;atoi(argv[1]); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;num&amp;nbsp;=&amp;nbsp;1; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Create&amp;nbsp;an&amp;nbsp;AF_INET6&amp;nbsp;stream&amp;nbsp;socket&amp;nbsp;to&amp;nbsp;receive&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;incoming&amp;nbsp;connections&amp;nbsp;on&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;listen_sd&amp;nbsp;=&amp;nbsp;socket(AF_INET6,&amp;nbsp;SOCK_STREAM,&amp;nbsp;0); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(listen_sd&amp;nbsp;&amp;lt;&amp;nbsp;0) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;socket()&amp;nbsp;failed&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(-1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Allow&amp;nbsp;socket&amp;nbsp;descriptor&amp;nbsp;to&amp;nbsp;be&amp;nbsp;reuseable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;rc&amp;nbsp;=&amp;nbsp;setsockopt(listen_sd, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOL_SOCKET,&amp;nbsp;&amp;nbsp;SO_REUSEADDR, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(char&amp;nbsp;*)&amp;amp;on,&amp;nbsp;sizeof(on)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(rc&amp;nbsp;&amp;lt;&amp;nbsp;0) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;setsockopt()&amp;nbsp;failed&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(listen_sd); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(-1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Bind&amp;nbsp;the&amp;nbsp;socket&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;amp;addr,&amp;nbsp;0,&amp;nbsp;sizeof(addr)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;addr.sin6_family&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;AF_INET6; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;addr.sin6_port&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;htons(SERVER_PORT); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;memcpy(&amp;amp;addr.sin6_addr,&amp;nbsp;&amp;amp;in6addr_any,&amp;nbsp;sizeof(in6addr_any)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;rc&amp;nbsp;=&amp;nbsp;bind(listen_sd, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(struct&amp;nbsp;sockaddr&amp;nbsp;*)&amp;amp;addr,&amp;nbsp;sizeof(addr)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(rc&amp;nbsp;&amp;lt;&amp;nbsp;0) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;bind()&amp;nbsp;failed&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(listen_sd); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(-1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Set&amp;nbsp;the&amp;nbsp;listen&amp;nbsp;back&amp;nbsp;log&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;rc&amp;nbsp;=&amp;nbsp;listen(listen_sd,&amp;nbsp;5); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(rc&amp;nbsp;&amp;lt;&amp;nbsp;0) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;listen()&amp;nbsp;failed&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(listen_sd); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(-1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Inform&amp;nbsp;the&amp;nbsp;user&amp;nbsp;that&amp;nbsp;the&amp;nbsp;server&amp;nbsp;is&amp;nbsp;ready&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;The&amp;nbsp;server&amp;nbsp;is&amp;nbsp;ready\n&quot;); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Go&amp;nbsp;through&amp;nbsp;the&amp;nbsp;loop&amp;nbsp;once&amp;nbsp;for&amp;nbsp;each&amp;nbsp;connection&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(i=0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;num;&amp;nbsp;i++) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**********************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Wait&amp;nbsp;for&amp;nbsp;an&amp;nbsp;incoming&amp;nbsp;connection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**********************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;Interation:&amp;nbsp;%d\n&quot;,&amp;nbsp;i+1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;&amp;nbsp;&amp;nbsp;waiting&amp;nbsp;on&amp;nbsp;accept()\n&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;accept_sd&amp;nbsp;=&amp;nbsp;accept(listen_sd,&amp;nbsp;NULL,&amp;nbsp;NULL); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(accept_sd&amp;nbsp;&amp;lt;&amp;nbsp;0) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;accept()&amp;nbsp;failed&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(listen_sd); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(-1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;&amp;nbsp;&amp;nbsp;accept&amp;nbsp;completed&amp;nbsp;successfully\n&quot;); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**********************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Initialize&amp;nbsp;the&amp;nbsp;spawn&amp;nbsp;parameters&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;The&amp;nbsp;socket&amp;nbsp;descriptor&amp;nbsp;for&amp;nbsp;the&amp;nbsp;new&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;connection&amp;nbsp;is&amp;nbsp;mapped&amp;nbsp;over&amp;nbsp;to&amp;nbsp;descriptor&amp;nbsp;0&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;in&amp;nbsp;the&amp;nbsp;child&amp;nbsp;program.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**********************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;amp;inherit,&amp;nbsp;0,&amp;nbsp;sizeof(inherit)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spawn_argv[0]&amp;nbsp;&amp;nbsp;=&amp;nbsp;NULL; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spawn_envp[0]&amp;nbsp;&amp;nbsp;=&amp;nbsp;NULL; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spawn_fdmap[0]&amp;nbsp;=&amp;nbsp;accept_sd; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**********************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Create&amp;nbsp;the&amp;nbsp;worker&amp;nbsp;job&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**********************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;&amp;nbsp;&amp;nbsp;creating&amp;nbsp;worker&amp;nbsp;job\n&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pid&amp;nbsp;=&amp;nbsp;spawn(&quot;/QSYS.LIB/QGPL.LIB/WRKR1.PGM&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1,&amp;nbsp;spawn_fdmap,&amp;nbsp;&amp;amp;inherit, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spawn_argv,&amp;nbsp;spawn_envp); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(pid&amp;nbsp;&amp;lt;&amp;nbsp;0) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&quot;spawn()&amp;nbsp;failed&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(listen_sd); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(accept_sd); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(-1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;&amp;nbsp;&amp;nbsp;spawn&amp;nbsp;completed&amp;nbsp;successfully\n&quot;); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**********************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Close&amp;nbsp;down&amp;nbsp;the&amp;nbsp;incoming&amp;nbsp;connection&amp;nbsp;since&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;it&amp;nbsp;has&amp;nbsp;been&amp;nbsp;given&amp;nbsp;to&amp;nbsp;a&amp;nbsp;worker&amp;nbsp;to&amp;nbsp;handle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**********************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(accept_sd); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Close&amp;nbsp;down&amp;nbsp;the&amp;nbsp;listen&amp;nbsp;socket&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*************************************************/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(listen_sd); &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2896</guid>
      <comments>https://uple.tistory.com/2896#entry2896comment</comments>
      <pubDate>Sat, 23 Aug 2025 01:44:29 +0900</pubDate>
    </item>
    <item>
      <title>daemonize</title>
      <link>https://uple.tistory.com/2895</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;void daemonize() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pid_t pid = fork();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (pid &amp;lt; 0) exit(EXIT_FAILURE);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (pid &amp;gt; 0) exit(EXIT_SUCCESS); // 부모 종료&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (setsid() &amp;lt; 0) exit(EXIT_FAILURE);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;signal(SIGCHLD, SIG_IGN);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;signal(SIGHUP, SIG_IGN);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pid = fork();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (pid &amp;lt; 0) exit(EXIT_FAILURE);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (pid &amp;gt; 0) exit(EXIT_SUCCESS); // 첫 번째 자식 종료&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;umask(0);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chdir(&quot;/&quot;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(STDIN_FILENO);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(STDOUT_FILENO);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(STDERR_FILENO);&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2895</guid>
      <comments>https://uple.tistory.com/2895#entry2895comment</comments>
      <pubDate>Mon, 21 Jul 2025 07:51:42 +0900</pubDate>
    </item>
    <item>
      <title>C언어 프로세서 kill 하기</title>
      <link>https://uple.tistory.com/2894</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;int&amp;nbsp;fnKillProcByPid(pid_t&amp;nbsp;pid) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;kill(pid,&amp;nbsp;SIGTERM)&amp;nbsp;&amp;lt;&amp;nbsp;0&amp;nbsp;){ &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;kill(pid,&amp;nbsp;SIGKILL)&amp;nbsp;&amp;lt;&amp;nbsp;0&amp;nbsp;){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&amp;nbsp;&quot;[fnKillProcByPid()]&amp;nbsp;Can&amp;nbsp;Not&amp;nbsp;Kill&amp;nbsp;Running&amp;nbsp;Process&amp;nbsp;Pid[%d]&amp;nbsp;\n&quot;,&amp;nbsp;(int)pid); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;(-1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;1; &lt;br /&gt;&lt;br /&gt;} &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <category>C언어</category>
      <category>kill pid</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2894</guid>
      <comments>https://uple.tistory.com/2894#entry2894comment</comments>
      <pubDate>Sun, 2 Mar 2025 18:36:56 +0900</pubDate>
    </item>
    <item>
      <title>C언어 리눅스 프로세서 이름을 이용하여 PID구하기</title>
      <link>https://uple.tistory.com/2893</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 / proc/PID/ 파일을 이용하여 pid구하기&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;stdlib.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;strings.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;ctype.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;unistd.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;sys/errno.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;sys/types.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;sys/stat.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;sys/procfs.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;sys/signal.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;dirent.h&amp;gt; &lt;br /&gt;&lt;br /&gt;#define&amp;nbsp;DEF_PROC_DIR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;/proc&quot; &lt;br /&gt;#define&amp;nbsp;DEF_PROC_NAME_LEN&amp;nbsp;&amp;nbsp;128 &lt;br /&gt;&lt;br /&gt;pid_t&amp;nbsp;fnGetPidByProcName(char&amp;nbsp;*szInProcName) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fd; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pid; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DIR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*dirp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;dirent&amp;nbsp;*direntp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;&amp;nbsp;&amp;nbsp;*dname; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;&amp;nbsp;&amp;nbsp;fname[256]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;&amp;nbsp;&amp;nbsp;pname[256]; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;stat&amp;nbsp;st; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;(dirp&amp;nbsp;=&amp;nbsp;opendir(DEF_PROC_DIR))&amp;nbsp;==&amp;nbsp;NULL&amp;nbsp;){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&quot;[fnGetPidByProcName()]&amp;nbsp;ERROR_FAIL&amp;nbsp;opendir&amp;nbsp;fail[%s]&amp;nbsp;errno[%d][%s]\n&quot;,&amp;nbsp;DEF_PROC_DIR,&amp;nbsp;errno,&amp;nbsp;strerror(errno)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;(-1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(&amp;nbsp;(direntp&amp;nbsp;=&amp;nbsp;readdir(dirp))&amp;nbsp;!=&amp;nbsp;NULL&amp;nbsp;){ &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dname&amp;nbsp;=&amp;nbsp;direntp-&amp;gt;d_name; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(!isdigit(*dname))&amp;nbsp;continue; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pid&amp;nbsp;=&amp;nbsp;atoi(dname); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(fname,&amp;nbsp;0x00,&amp;nbsp;sizeof(fname)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf(fname,&amp;nbsp;&quot;/proc/%d/cmdline&quot;,&amp;nbsp;pid); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;get&amp;nbsp;the&amp;nbsp;process&amp;nbsp;owner&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;stat(&amp;nbsp;fname,&amp;nbsp;&amp;amp;st&amp;nbsp;); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(status&amp;nbsp;!=&amp;nbsp;0)&amp;nbsp;continue; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;st.st_uid&amp;nbsp;!=&amp;nbsp;getuid()&amp;nbsp;){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fd&amp;nbsp;=&amp;nbsp;open(fname,&amp;nbsp;O_RDONLY); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;fd&amp;nbsp;&amp;lt;&amp;nbsp;0&amp;nbsp;){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;pname,&amp;nbsp;0x00,&amp;nbsp;sizeof(pname)&amp;nbsp;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;read(fd,&amp;nbsp;pname,&amp;nbsp;DEF_PROC_NAME_LEN-1)&amp;nbsp;&amp;lt;&amp;nbsp;0&amp;nbsp;){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(fd); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(fd); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;!strcasecmp(szInProcName,&amp;nbsp;pname)&amp;nbsp;){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&quot;[fnGetPidByProcName()]&amp;nbsp;szInProcName[%s]&amp;nbsp;pname[%s]&amp;nbsp;pid[%d]\n&quot;,&amp;nbsp;szInProcName,&amp;nbsp;pname,&amp;nbsp;pid); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;closedir(&amp;nbsp;dirp&amp;nbsp;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;(pid); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;closedir(&amp;nbsp;dirp&amp;nbsp;); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;(-1); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int&amp;nbsp;fnGetPidExistCheck(int&amp;nbsp;pid) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DIR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*dirp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct&amp;nbsp;dirent&amp;nbsp;*direntp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;(dirp&amp;nbsp;=&amp;nbsp;opendir(DEF_PROC_DIR))&amp;nbsp;==&amp;nbsp;NULL&amp;nbsp;){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&quot;[fnGetPidExistCheck()]&amp;nbsp;ERROR_FAIL&amp;nbsp;opendir&amp;nbsp;fail[%s]&amp;nbsp;errno[%d][%s]\n&quot;,&amp;nbsp;DEF_PROC_DIR,&amp;nbsp;errno,&amp;nbsp;strerror(errno)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(&amp;nbsp;(direntp&amp;nbsp;=&amp;nbsp;readdir(dirp))&amp;nbsp;!=&amp;nbsp;NULL&amp;nbsp;){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;pid&amp;nbsp;==&amp;nbsp;atoi(direntp-&amp;gt;d_name)&amp;nbsp;){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;closedir(dirp); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;(1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;closedir(dirp); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;(0); &lt;br /&gt;&lt;br /&gt;} &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2893</guid>
      <comments>https://uple.tistory.com/2893#entry2893comment</comments>
      <pubDate>Sun, 2 Mar 2025 18:21:16 +0900</pubDate>
    </item>
    <item>
      <title>http -&amp;gt; https 강제 전환 막기</title>
      <link>https://uple.tistory.com/2892</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;http&amp;nbsp;-&amp;gt;&amp;nbsp;https&amp;nbsp;강제&amp;nbsp;전환&amp;nbsp;막기 &lt;br /&gt;&lt;br /&gt;edge://net-internals/#hsts &lt;br /&gt;&lt;br /&gt;chrome://net-internals/#hsts&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edge___net_internals___hsts.jpg&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;475&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n8GiY/btsMjgpMAF4/ZPYs5kPOeHt8YXgFheoQD1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n8GiY/btsMjgpMAF4/ZPYs5kPOeHt8YXgFheoQD1/img.jpg&quot; data-alt=&quot;edge://net-internals/#hsts&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n8GiY/btsMjgpMAF4/ZPYs5kPOeHt8YXgFheoQD1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn8GiY%2FbtsMjgpMAF4%2FZPYs5kPOeHt8YXgFheoQD1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1316&quot; height=&quot;475&quot; data-filename=&quot;edge___net_internals___hsts.jpg&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;475&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;edge://net-internals/#hsts&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;chrome___net_internals__hsts.jpg&quot; data-origin-width=&quot;1326&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/efR3QH/btsMj9b7bdS/BpAxjkSlB5gwLIT2xBKnik/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/efR3QH/btsMj9b7bdS/BpAxjkSlB5gwLIT2xBKnik/img.jpg&quot; data-alt=&quot;chrome://net-internals/#hsts&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/efR3QH/btsMj9b7bdS/BpAxjkSlB5gwLIT2xBKnik/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FefR3QH%2FbtsMj9b7bdS%2FBpAxjkSlB5gwLIT2xBKnik%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1326&quot; height=&quot;484&quot; data-filename=&quot;chrome___net_internals__hsts.jpg&quot; data-origin-width=&quot;1326&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;chrome://net-internals/#hsts&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>IT_COMPUTER</category>
      <category>chrome://net-internals/#hsts</category>
      <category>edge://net-internals/#hsts</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2892</guid>
      <comments>https://uple.tistory.com/2892#entry2892comment</comments>
      <pubDate>Sun, 16 Feb 2025 11:13:00 +0900</pubDate>
    </item>
    <item>
      <title>전자금융업 등록현황</title>
      <link>https://uple.tistory.com/2891</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://fine.fss.or.kr/fine/bbs/B0000392/list.do?menuNo=900495&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://fine.fss.or.kr/fine/bbs/B0000392/list.do?menuNo=900495&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파인(금융소비자정보포탈) -&amp;gt; 금융회사정보 -&amp;gt;&amp;nbsp;전자금융업 등록현황 조회&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>finance</category>
      <category>pg업체현황</category>
      <category>금융소비자정보포탈</category>
      <category>전자금융업 등록현황 조회</category>
      <category>파인</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2891</guid>
      <comments>https://uple.tistory.com/2891#entry2891comment</comments>
      <pubDate>Sun, 15 Dec 2024 21:14:03 +0900</pubDate>
    </item>
    <item>
      <title>한강 공식 영문 표기 - Hangang River</title>
      <link>https://uple.tistory.com/2890</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;한강의 공식 영문 표기&lt;br&gt;&lt;br&gt;Hangang River&lt;/p&gt;</description>
      <category>knowledge</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2890</guid>
      <comments>https://uple.tistory.com/2890#entry2890comment</comments>
      <pubDate>Thu, 12 Dec 2024 13:41:05 +0900</pubDate>
    </item>
    <item>
      <title>아보하 소확행</title>
      <link>https://uple.tistory.com/2889</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;아보하 &lt;br&gt;아주 보통의 하루&lt;br&gt;&lt;br&gt;소확행&lt;br&gt;소소하지만 확실한 행복&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>knowledge</category>
      <category>아보하</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2889</guid>
      <comments>https://uple.tistory.com/2889#entry2889comment</comments>
      <pubDate>Wed, 20 Nov 2024 20:43:21 +0900</pubDate>
    </item>
    <item>
      <title>YOLO YONO</title>
      <link>https://uple.tistory.com/2888</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;YOLO(Your Only Live Once)&lt;br&gt;한정된 인생을 살며 순간을 즐기자는 철학을 바탕으로 다양한 경험을 위해 소비의 경험을 중시하고 자신이 가치 있다고 여기는 것에 아낌없이 소비하는 것&lt;br&gt;&lt;br&gt;YONO(You Only Need One)&lt;br&gt;네가 필요한 건 이거 하나뿐이야&lt;br&gt;불필요한 소비를 줄이고 꼭 필요한 것에만 집중하는 사람들을 말하며 최소한의 소비를 통해 삶의 질을 높이는 라이프스타일을 추구하며 불필요한 물건을 줄이고 실용성을 중시&lt;/p&gt;</description>
      <category>thinking</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2888</guid>
      <comments>https://uple.tistory.com/2888#entry2888comment</comments>
      <pubDate>Sun, 10 Nov 2024 16:43:50 +0900</pubDate>
    </item>
    <item>
      <title>VOC</title>
      <link>https://uple.tistory.com/2887</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;VOC(Voice Of Customer, 고객 의견) &lt;/p&gt;</description>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2887</guid>
      <comments>https://uple.tistory.com/2887#entry2887comment</comments>
      <pubDate>Wed, 23 Oct 2024 22:28:10 +0900</pubDate>
    </item>
    <item>
      <title>아보하</title>
      <link>https://uple.tistory.com/2886</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;아보하&lt;br&gt;&lt;br&gt;아주 보통의 하루가 가지는 힘을 의미하며 무탈하고 특별할 것 없이 평온한 하루를 통해 자신에게 집중하는 태도를 갖는 것이다.&lt;/p&gt;</description>
      <category>knowledge</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2886</guid>
      <comments>https://uple.tistory.com/2886#entry2886comment</comments>
      <pubDate>Thu, 26 Sep 2024 06:44:27 +0900</pubDate>
    </item>
    <item>
      <title>옴니보어(Omnivores)</title>
      <link>https://uple.tistory.com/2885</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;옴니보어(Omnivores)&lt;br&gt;여러 분야에 관심을 두는 ‘잡식성 소비자’를 의미한다. 나이와 성별, 소득 등의 경계가 사라지고 개인의 취향이 또렷해진 것인데, 집단보다는 개인 취미에 방점을 두고 다양성을 추구하는 사람을 일컫는다.&lt;/p&gt;</description>
      <category>knowledge</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2885</guid>
      <comments>https://uple.tistory.com/2885#entry2885comment</comments>
      <pubDate>Thu, 26 Sep 2024 06:42:34 +0900</pubDate>
    </item>
    <item>
      <title>openssl sha256 example source code</title>
      <link>https://uple.tistory.com/2884</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;openssl/sha.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt; &lt;br /&gt;&lt;br /&gt;int&amp;nbsp;main() &lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;The&amp;nbsp;input&amp;nbsp;message &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;char&amp;nbsp;*message&amp;nbsp;=&amp;nbsp;&quot;Hello,&amp;nbsp;OpenSSL&amp;nbsp;SHA-256!&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Buffer&amp;nbsp;to&amp;nbsp;hold&amp;nbsp;the&amp;nbsp;SHA256&amp;nbsp;digest &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;hash[SHA256_DIGEST_LENGTH]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Compute&amp;nbsp;the&amp;nbsp;SHA-256&amp;nbsp;hash &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SHA256_CTX&amp;nbsp;sha256; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SHA256_Init(&amp;amp;sha256); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SHA256_Update(&amp;amp;sha256,&amp;nbsp;message,&amp;nbsp;strlen(message)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SHA256_Final(hash,&amp;nbsp;&amp;amp;sha256); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Print&amp;nbsp;the&amp;nbsp;hash&amp;nbsp;as&amp;nbsp;hexadecimal &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;SHA-256&amp;nbsp;hash:&amp;nbsp;&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;SHA256_DIGEST_LENGTH;&amp;nbsp;i++)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;%02x&quot;,&amp;nbsp;hash[i]); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;\n&quot;); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;컴파일 &lt;br /&gt;&lt;br /&gt;gcc&amp;nbsp;-o&amp;nbsp;sha256_example&amp;nbsp;sha256_example.c&amp;nbsp;-lssl&amp;nbsp;-lcrypto &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <category>openssl</category>
      <category>SHA256</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2884</guid>
      <comments>https://uple.tistory.com/2884#entry2884comment</comments>
      <pubDate>Wed, 18 Sep 2024 23:29:45 +0900</pubDate>
    </item>
    <item>
      <title>개인정보처리방침</title>
      <link>https://uple.tistory.com/2883</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;UPLE 은 개인정보를 보관 저장하지 않습니다.&lt;/p&gt;</description>
      <category>uple/privacy</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2883</guid>
      <comments>https://uple.tistory.com/2883#entry2883comment</comments>
      <pubDate>Sun, 25 Aug 2024 18:59:44 +0900</pubDate>
    </item>
    <item>
      <title>아이폰 기기보증확인하기</title>
      <link>https://uple.tistory.com/2882</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;아이폰 기기보증확인하기&lt;br&gt;&lt;br&gt;&lt;a href=&quot;https://checkcoverage.apple.com/?locale=ko_KR&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://checkcoverage.apple.com/?locale=ko_KR&lt;/span&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>mobile/IPHONE_IOS</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2882</guid>
      <comments>https://uple.tistory.com/2882#entry2882comment</comments>
      <pubDate>Thu, 28 Mar 2024 21:41:59 +0900</pubDate>
    </item>
    <item>
      <title>nonblock / no_nonblock</title>
      <link>https://uple.tistory.com/2881</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;stdlib.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;errno.h&amp;gt; &lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;fcntl.h&amp;gt; &lt;br /&gt;&lt;br /&gt;bool&amp;nbsp;nonblock(int&amp;nbsp;fd) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;fdflags; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fdflags&amp;nbsp;=&amp;nbsp;fcntl(fd,&amp;nbsp;F_GETFL); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(fdflags&amp;nbsp;&amp;lt;&amp;nbsp;0)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&amp;nbsp;&quot;%d:&amp;nbsp;fcntl(F_GETFL):&amp;nbsp;%s\n&quot;,&amp;nbsp;fd,&amp;nbsp;strerror(errno)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(fcntl(fd,&amp;nbsp;F_SETFL,&amp;nbsp;fdflags&amp;nbsp;|&amp;nbsp;O_NONBLOCK)&amp;nbsp;&amp;lt;&amp;nbsp;0)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&amp;nbsp;&quot;%d:&amp;nbsp;fcntl(F_SETFL):&amp;nbsp;%s\n&quot;,&amp;nbsp;fd,&amp;nbsp;strerror(errno)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;fdflags&amp;nbsp;&amp;amp;&amp;nbsp;O_NONBLOCK; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;bool&amp;nbsp;no_nonblock(int&amp;nbsp;fd) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;fdflags; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fdflags&amp;nbsp;=&amp;nbsp;fcntl(fd,&amp;nbsp;F_GETFL); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(fdflags&amp;nbsp;&amp;lt;&amp;nbsp;0)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&amp;nbsp;&quot;%d:&amp;nbsp;fcntl(F_GETFL):&amp;nbsp;%s\n&quot;,&amp;nbsp;fd,&amp;nbsp;strerror(errno)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(fcntl(fd,&amp;nbsp;F_SETFL,&amp;nbsp;fdflags&amp;nbsp;&amp;amp;&amp;nbsp;~O_NONBLOCK)&amp;nbsp;&amp;lt;&amp;nbsp;0)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&amp;nbsp;&quot;%d:&amp;nbsp;fcntl(F_SETFL):&amp;nbsp;%s\n&quot;,&amp;nbsp;fd,&amp;nbsp;strerror(errno)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;fdflags&amp;nbsp;&amp;amp;&amp;nbsp;O_NONBLOCK; &lt;br /&gt;} &lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <category>fcntl</category>
      <category>nonblock</category>
      <category>no_nonblock</category>
      <category>O_NONBLOCK</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2881</guid>
      <comments>https://uple.tistory.com/2881#entry2881comment</comments>
      <pubDate>Sat, 26 Aug 2023 20:09:34 +0900</pubDate>
    </item>
    <item>
      <title>윈도우10 시리얼넘버 제품키 확인</title>
      <link>https://uple.tistory.com/2879</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우10 시리얼넘버 제품키 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;reg&amp;nbsp;query&amp;nbsp;&amp;ldquo;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows&amp;nbsp;NT\CurrentVersion\SoftwareProtectionPlatform&amp;rdquo;&amp;nbsp;/v&amp;nbsp;BackupProductKeyDefault &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Microsoft&amp;nbsp;Windows&amp;nbsp;[Version&amp;nbsp;10.0.19045.3208] &lt;br /&gt;(c)&amp;nbsp;Microsoft&amp;nbsp;Corporation.&amp;nbsp;All&amp;nbsp;rights&amp;nbsp;reserved. &lt;br /&gt;&lt;br /&gt;C:\WINDOWS\system32&amp;gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;reg&amp;nbsp;query&amp;nbsp;&quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows&amp;nbsp;NT\CurrentVersion\SoftwareProtectionPlatform&quot;&amp;nbsp;/v&amp;nbsp;BackupProductKeyDefault&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows&amp;nbsp;NT\CurrentVersion\SoftwareProtectionPlatform &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BackupProductKeyDefault&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;REG_SZ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&lt;u&gt;QJNXR-****-****-****-6MT6Y&lt;/u&gt;&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;C:\WINDOWS\system32&amp;gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>os/WINDOWS</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2879</guid>
      <comments>https://uple.tistory.com/2879#entry2879comment</comments>
      <pubDate>Mon, 17 Jul 2023 21:42:15 +0900</pubDate>
    </item>
    <item>
      <title>영어회화 패턴 50가지</title>
      <link>https://uple.tistory.com/2876</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;영어회화 패턴 50가지&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;1. I think... 나는 ... 같은데&lt;br /&gt;&lt;br /&gt;I think you're right. 난 네 말이 맞는 것 같아.&lt;br /&gt;I think we're lost. 난 우리가 길을 잃어버린것 같아.&lt;br /&gt;I think this is it. 난 이것이 그것 같은데.&lt;br /&gt;I think this is yours. 난 이것이 네 것 같은데.&lt;br /&gt;I think this is enough. 난 이거면 충분한 것 같아.&lt;br /&gt;I think that is better. 난 저것이 더 나은 것 같아.&lt;br /&gt;I think it's two hours long. 난 2시간 정도 되는 것 같은데.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;2. I mean... 내 말은...&lt;br /&gt;&lt;br /&gt;I mean I love you. 내 말은 당신을 사랑한다는거야.&lt;br /&gt;I mean I hate you. 내 말은 네가 싫다는거야.&lt;br /&gt;I mean I'll do it for you. 내 말은 너를 위해 하겠다는거야.&lt;br /&gt;I mean I don't want any. 내 말은 아무것도 필요없다는거야.&lt;br /&gt;I mean I don't know how. 내 말은 어떻게 해야 할지 모르겠다는거야.&lt;br /&gt;I mean we should help. 내 말은 우리가 도와줘야 한다는거야.&lt;br /&gt;I mean to clean up first. 내 말은 청소를 먼저 하라는거야.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;3. I like... 나는 ... 좋아해&lt;br /&gt;&lt;br /&gt;I like you. 난 널 좋아해.&lt;br /&gt;I like this. 난 이게 맘에 들어.&lt;br /&gt;I like to swim. 난 수영하는 게 좋아.&lt;br /&gt;I like my job. 난 내 일이 좋아.&lt;br /&gt;I like reading. 난 책 읽는 걸 좋아해. &lt;br /&gt;I like the movies. 난 영화를 좋아해.&lt;br /&gt;I like your shoes. 난 네 신발이 맘에 들어.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;4. Do you... ...하니?&lt;br /&gt;&lt;br /&gt;Do you live here? 여기 살아?&lt;br /&gt;Do you like this? 이게 맘에 들어? &lt;br /&gt;Do you have a car? 너 차 있어?&lt;br /&gt;Do you have enough? 충분히 있니?&lt;br /&gt;Do you want more? 좀 더 줄까? &lt;br /&gt;Do you want to go out? 밖에 나갈까?&lt;br /&gt;Do you come here often? 여기에 자주 오니?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;5. Are you...? ...하니?&lt;br /&gt;&lt;br /&gt;Are you okay? 괜찮아?&lt;br /&gt;Are you done? 다 끝냈어? &lt;br /&gt;Are you alone? 혼자세요? &lt;br /&gt;Are you happy? 행복하니?&lt;br /&gt;Are you leaving? 지금 가는거야? &lt;br /&gt;Are you working today? 오늘 일하니? &lt;br /&gt;Are you going shopping? 쇼핑 가는거야? &lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;6. Can I...? 내가 ...해도 돼요?&lt;br /&gt;&lt;br /&gt;Can I drive? 내가 운전해도 돼? &lt;br /&gt;Can I help you? 도와줄까?&lt;br /&gt;Can I see that? 저것 봐도 돼? &lt;br /&gt;Can I call you? 내가 전화해도 돼? &lt;br /&gt;Can I keep this? 이거 내가 가져도 돼? &lt;br /&gt;Can I go with you? 너랑 같이 가도 돼? &lt;br /&gt;Can I have some more? 좀더 먹어도 돼? &lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;7. Could you...? 내가 ...해도 돼요?&lt;br /&gt;&lt;br /&gt;Could you help me? 날 좀 도와줄래요?&lt;br /&gt;Could you turn off the TV? TV 좀 꺼줄래요?&lt;br /&gt;Could you pass the salt? 소금을 건네주시겠어요?&lt;br /&gt;Could you hold this a minute? 이거 잠깐만 들어줄래요? &lt;br /&gt;Could you check this for me? 이것 좀 체크해 주시겠어요? &lt;br /&gt;Could you give me some more? 조금만 더 주시겠어요? &lt;br /&gt;Could you take out the trash? 쓰레기 좀 밖에 내다 놓을래요?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;8. Let's... ...하자&lt;br /&gt;&lt;br /&gt;Let's go. 가자.&lt;br /&gt;Let's eat. 먹자.&lt;br /&gt;Let's go to bed. 자자.&lt;br /&gt;Let's grab a beer. 맥주 한 잔 하자. &lt;br /&gt;Let's go for a drive. 드라이브나 가자.&lt;br /&gt;Let's take a break. 좀 쉬자.&lt;br /&gt;Let's finish this later. 이거 나중에 끝내자.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;9. I feel... ...한 것 같아&lt;br /&gt;&lt;br /&gt;I feel sad. 슬퍼. &lt;br /&gt;I feel cold. 추워.&lt;br /&gt;I feel tired. 피곤해.&lt;br /&gt;I feel thirsty. 목말라.&lt;br /&gt;I feel sick. 아픈거 같아. &lt;br /&gt;I feel hungry. 배고파.&lt;br /&gt;I feel good. 느낌이 좋아.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;10. I need to... 나는 ...해야 해&lt;br /&gt;&lt;br /&gt;I need to get a job. 난 일자리가 필요해. &lt;br /&gt;I need to get new shoes. 새 신발을 사야겠군.&lt;br /&gt;I need to go shopping. 쇼핑하러 가야겠어. &lt;br /&gt;I need to buy some milk. 우유를 사야겠어. &lt;br /&gt;I need to study tonight. 오늘 밤에는 공부해야 돼. &lt;br /&gt;I need to use the restroom. 화장실을 써야겠어.&lt;br /&gt;I need to call my parents. 부모님께 전화를 해야 돼.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;11. Can I have...? 나 ...해도 돼?&lt;br /&gt;&lt;br /&gt;Can I have this? 나 이거 가져도 돼? &lt;br /&gt;Can I have a pet? 나 애완동물 가져도 돼?&lt;br /&gt;Can I have a cookie? 나 쿠키 먹어도 돼? &lt;br /&gt;Can I have some time off? 좀 쉴 수가 있을까요? &lt;br /&gt;Can I have some more time? 시간을 좀 더 가져도 될까? &lt;br /&gt;Can I have another beer? 맥주 한 병 더 마셔도 돼? &lt;br /&gt;Can I have another chance? 다른 기회를 갖을 수 있을까?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;12. I'm sure... 나는 ...라고 확신해&lt;br /&gt;&lt;br /&gt;I'm sure she'll come. 그녀는 꼭 올거야. &lt;br /&gt;I'm sure she'll call soon. 그녀가 곧 전화활거야.&lt;br /&gt;I'm sure she'll be surprised. 그녀가 깜짝 놀랄거야. &lt;br /&gt;I'm sure he'll like it. 그는 이걸 좋아할거야.&lt;br /&gt;I'm sure this is enough. 이거면 충분해.&lt;br /&gt;I'm sure excited about it. 기분이 정말 짱이야.&lt;br /&gt;I'm sure glad you came. 네가 와서 정말 기뻐.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;13. I'm sorry... ...해서 미안해&lt;br /&gt;&lt;br /&gt;I'm sorry I'm late. 늦어서 미안해. &lt;br /&gt;I'm sorry I broke it. 부러뜨려서 미안해.&lt;br /&gt;I'm sorry I lost the keys. 열쇠를 잃어버려서 미안해.&lt;br /&gt;I'm sorry I forgot to call. 전화하는거 잊어버려서 미안해. &lt;br /&gt;I'm sorry you couldn't come. 네가 못 온다니 유감이야.&lt;br /&gt;I'm sorry you didn't get any. 네가 아무 것도 갖지 못해서 미안해.&lt;br /&gt;I'm sorry It's not the color you wanted. 네가 원하는 색깔이 아니어서 미안해.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;14. I have to... 난 ...을 해야해&lt;br /&gt;&lt;br /&gt;I have to study. 난 공부를 해야 해. &lt;br /&gt;I have to go to work. 난 일하러 가야 해. &lt;br /&gt;I have to go home now. 난 지금 집에 가야 해. &lt;br /&gt;I have to write a paper. 난 보고서를 써야 해. &lt;br /&gt;I have to do my makeup. 난 화장을 해야 해. &lt;br /&gt;I have to brush my teeth. 난 이를 닦아야 해. &lt;br /&gt;I have to call my mom. 난 엄마한테 전화를 해야 해.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;15. How about... ...는 어때?&lt;br /&gt;&lt;br /&gt;How about you? 넌 어때? &lt;br /&gt;How about him? 그 사람 어때? &lt;br /&gt;How about later? 다음에 어때? &lt;br /&gt;How about one more? 하나 더 어때? &lt;br /&gt;How about a bigger one? 좀 큰 게 어때? &lt;br /&gt;How about Chinese food? 중국 음식은 어때? &lt;br /&gt;How about watching a movie? 영화 보는거 어때?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;16. Do you want to...? ...할래?&lt;br /&gt;&lt;br /&gt;Do you want to drive? 운전할래? &lt;br /&gt;Do you want to go home now? 지금 집에 갈래? &lt;br /&gt;Do you want to go to the mall? 쇼핑몰에 갈래? &lt;br /&gt;Do you want to watch a movie? 영화 볼래? &lt;br /&gt;Do you want to have a beer? 맥주 할래? &lt;br /&gt;Do you want to have a cup of coffee? 커피 한 잔 할래?&lt;br /&gt;Do you want to have dinner with me? 나랑 저녁 먹을래?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;17. Do you think...? 넌 ...라고 생각하니?&lt;br /&gt;&lt;br /&gt;Do you think she's nice? 그 여자가 멋있다고 생각하니? &lt;br /&gt;Do you think this is right? 이렇게 하는 게 맞다고 생각해?&lt;br /&gt;Do you think this'll work? 이것이 효과가 있다고 생각하니?&lt;br /&gt;Do you think this tastes okay? 이 맛이 괜찮다고 생각해? &lt;br /&gt;Do you think I should do this? 내가 이걸 해야 한다고 생각해? &lt;br /&gt;Do you think we're too early? 우리가 너무 빠르다고 생각하니?&lt;br /&gt;Do you think we have enough? 우리가 충분히 갖고 있다고 생각하니?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;18. How do you...? 넌 ...라고 생각하니?&lt;br /&gt;&lt;br /&gt;How do you feel? 느낌이 어때?&lt;br /&gt;How do you do that? 그거 어떻게 해?&lt;br /&gt;How do you make it? 이거 어떻게 만들었어?&lt;br /&gt;How do you know him? 그 사람을 어떻게 알아?&lt;br /&gt;How do you like this? 어떻게 이걸 좋아해?&lt;br /&gt;How do you like my new dress? 내 새 드레스 어때?&lt;br /&gt;How do you want your eggs? 계란을 어떻게 해서 먹을래?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;19. I don't want to... 나는 ...하고 싶지 않아&lt;br /&gt;&lt;br /&gt;I don't want to drive. 운전하고 싶지 않아. &lt;br /&gt;I don't want to get up. 일어나고 싶지 않아.&lt;br /&gt;I don't want to go to bed. 자고 싶지 않아.&lt;br /&gt;I don't want to go to school. 학교 가고 싶지 않아.&lt;br /&gt;I don't want to work today. 오늘 일하고 싶지 않아.&lt;br /&gt;I don't want to talk to him. 그 남자와 말하고 싶지 않아.&lt;br /&gt;I don't want to be seen like this. 난 이렇게 보이기 싫어.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;20. Would you like to...? ...하고 싶으세요?&lt;br /&gt;&lt;br /&gt;Would you like to do this? 이것을 하고 싶으세요? &lt;br /&gt;Would you like to keep it? 이것을 갖고 싶으세요?&lt;br /&gt;Would you like to have one? 하나 갖고 싶으세요?&lt;br /&gt;Would you like to take a break? 좀 쉬고 싶으세요?&lt;br /&gt;Would you like to try again? 다시 한 번 해보고 싶으세요?&lt;br /&gt;Would you like to go home? 집에 가시고 싶으세요?&lt;br /&gt;Would you like to go to the mall? 쇼핑몰에 가고 싶으세요?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;21. Have you...? ...한 적 있어?&lt;br /&gt;&lt;br /&gt;Have you found it yet? 그거 아직 못 찾았나?&lt;br /&gt;Have you seen my keys? 내 열쇠 본 적 있나?&lt;br /&gt;Have you seen this movie? 이 영화 본 적 있어?&lt;br /&gt;Have you been here before? 여기 와 본 적 있니?&lt;br /&gt;Have you been waiting long? 오래 기다려본 적 있어?&lt;br /&gt;Have you ever done this before? 이거 전에 해본 적 있어?&lt;br /&gt;Have you ever met her before? 그 여자를 전에 만난 적 있니?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;22. I'm going to... 나는 ... 하려고 해&lt;br /&gt;&lt;br /&gt;I'm going to work? 일하러 갈거야.&lt;br /&gt;I'm going to buy it. 그것을 살거야.&lt;br /&gt;I'm going to leave now. 지금 떠날거야. &lt;br /&gt;I'm going to finish this. 이것을 끝낼거야. &lt;br /&gt;I'm going to call him. 그 남자한테 전화할거야.&lt;br /&gt;I'm going to go upstairs. 위층에 올라갈거야.&lt;br /&gt;I'm going to bake a cake. 케이크를 만들거야.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;23. Don't forget to... ... 하는거 잊지마&lt;br /&gt;&lt;br /&gt;Don't forget to study. 공부하는거 잊지 마.&lt;br /&gt;Don't forget to call me. 나한테 전화하는거 잊지 마. &lt;br /&gt;Don't forget to write me. 나한테 편지 쓰는거 잊지 마.&lt;br /&gt;Don't forget to bring the beer. 맥주 갖고 오는거 잊지 마.&lt;br /&gt;Don't forget to invite your brother. 네 남동생 초대하는거 잊지마.&lt;br /&gt;Don't forget to take out the garabage. 쓰레기 버리는거 잊지 마.&lt;br /&gt;Don't forget to thank your sister for me. 네 여동생에게 고맙다는 말 잊지 마.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;24. Are you going to...? 너 ...할거니?&lt;br /&gt;&lt;br /&gt;Are you going to study? 공부할거니?&lt;br /&gt;Are you going to buy it? 그거 살거니?&lt;br /&gt;Are you going to leave soon? 금방 떠날거니?&lt;br /&gt;Are you going to call her? 그녀한테 전화할거야?&lt;br /&gt;Are you going to watch the game? 게임 볼거니?&lt;br /&gt;Are you going to see him again? 그 남자를 다시 볼거니?&lt;br /&gt;Are you going to be home tonight? 오늘 밤에 집에 있을거니?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;25. Where do you...? 너 어디에 ...?&lt;br /&gt;&lt;br /&gt;Where do you live? 너 어디에 살아?&lt;br /&gt;Where do you work? 너 어디서 일해?&lt;br /&gt;Where do you put this? 이거 어디에 놓을거니?&lt;br /&gt;Where do you want to go? 너 어디게 가고 싶니?&lt;br /&gt;Where do you go to school? 어디에서 학교 다니니?&lt;br /&gt;Where do you buy your shoes? 네 신발 어디에서 샀니?&lt;br /&gt;Where do you come from? 너 어디에서 왔니?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;26. Thank you for... ...해줘서 고마워&lt;br /&gt;&lt;br /&gt;Thank you for coming. 와줘서 고마워.&lt;br /&gt;Thank you for calling. 전화해줘서 고마워.&lt;br /&gt;Thank you for all your help. 도와줘서 고마워.&lt;br /&gt;Thank you for cleaning up. 청소해줘서 고마워.&lt;br /&gt;Thank you for reminding me. 알려줘서 고마워.&lt;br /&gt;Thank you for making dinner. 저녁을 해줘서 고마워.&lt;br /&gt;Thank you for driving me home. 집까지 태워줘서 고마워.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;27. Who likes...? 누가 ...를 좋아하지?&lt;br /&gt;&lt;br /&gt;Who likes this? 누가 이거 좋아하지?&lt;br /&gt;Who likes her? 누가 그녀를 좋아하지?&lt;br /&gt;Who likes spaghetti? 누가 스파게티를 좋아하지?&lt;br /&gt;Who likes this movie? 누가 이 영화 좋아하지?&lt;br /&gt;Who likes to swim? 누가 수영을 좋아하지?&lt;br /&gt;Who likes to work? 누가 일하는거 좋아하지?&lt;br /&gt;Who likes to get up early? 누가 아침 일찍 일어나는거 좋아하지?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;28. used to... 나는 ...하곤 했어&lt;br /&gt;&lt;br /&gt;I used to eat out. 외식을 많이 했었어.&lt;br /&gt;I used to like him. 그 남자를 좋아했었어.&lt;br /&gt;I used to like working. 일을 좋아했었어.&lt;br /&gt;I used to hate math. 수학을 싫어했었어.&lt;br /&gt;I used to drink a lot. 술을 많이 마셨었어.&lt;br /&gt;I used to drink coffee. 커피를 마셨었어.&lt;br /&gt;I used to travel a lot. 여행을 많이 다녔었어.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;29. Who's going to...? 누가 ...할래?&lt;br /&gt;&lt;br /&gt;Who's going to drive? 누가 운전할거니?&lt;br /&gt;Who's going to fix this? 누가 이것을 고칠거니?&lt;br /&gt;Who's going to the store? 누가 가게에 갈래?&lt;br /&gt;Who's going to tell him? 누가 그에게 말을거니?&lt;br /&gt;Who's going to buy the ticket? 누가 표를 사러 갈래?&lt;br /&gt;Who's going to watch the baby? 누가 아이를 볼거니?&lt;br /&gt;Who's going to wash the dishes? 누가 설거지할거니?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;30. It looks like... ...한 것 같아&lt;br /&gt;&lt;br /&gt;It looks like I'm wrong. 내가 틀린 것 같아.&lt;br /&gt;It looks like you're right. 네가 맞는 것 같아.&lt;br /&gt;It looks like we might win. 우리가 이길 것 같아.&lt;br /&gt;It looks like Jack's coming. Jack이 온 것 같아.&lt;br /&gt;It looks like it might rain. 비가 올 것 같아.&lt;br /&gt;It looks like I'm going to be late. 내가 좀 늦을 것 같아.&lt;br /&gt;It looks like we're ready to leave. 우리는 떠날 준비가 된 것 같아.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;31. Why don't you...? ...하는 게 어때?&lt;br /&gt;&lt;br /&gt;Why don't you like me? 날 좋아하는게 어때?&lt;br /&gt;Why don't you take a break? 좀 쉬는 게 어때?&lt;br /&gt;Why don't you take the bus? 버스를 타는 게 어때?&lt;br /&gt;Why don't you leave me alone? 날 가만히 놔두는 게 어때?&lt;br /&gt;Why don't you ask for directions. 방향을 물어볼는 게 어때?&lt;br /&gt;Why don't you ask your mother? 네 엄마한테 물어보는 게 어때?&lt;br /&gt;Why don't you find someone else? 다른 사람을 찾아보는 게 어때?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;32. I'm trying to... ...하려고 노력 중이야&lt;br /&gt;&lt;br /&gt;I'm trying to work. 일하려고 노력 중이야.&lt;br /&gt;I'm trying to study. 공부하려고 노력 중이야.&lt;br /&gt;I'm trying to find my keys. 내 열쇠를 찾는 중이야.&lt;br /&gt;I'm trying to make a cake. 케이크를 만들려는 중이야.&lt;br /&gt;I'm trying to finish this. 이걸 끝내려고 노력 중이야.&lt;br /&gt;I'm trying to finish it on time. 이걸 시간에 맞춰 끝내려는 중이야.&lt;br /&gt;I'm trying to remember her name. 그녀의 이름을 기억해내려는 중이야.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;33. I told you to... 내가 너한테 ...려고 했잖아&lt;br /&gt;&lt;br /&gt;I told you to go away. 내가 저리 가라고 했잖아.&lt;br /&gt;I told you to be careful. 내가 조심하라고 했잖아.&lt;br /&gt;I told you to leave me alone. 날 혼자 내버려두라고 했잖아.&lt;br /&gt;I told you to stop smoking. 내가 담배 끊으라고 했잖아.&lt;br /&gt;I told you to stop calling me. 나한테 전화하지 말라고 했잖아.&lt;br /&gt;I told you to help your mom. 네 엄마를 도와드리라고 했잖아.&lt;br /&gt;I told you to ask someone else. 내가 다른 사람에게 물어보라고 했잖아.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;34. You don't have to... 네가 ...하지 않아도 돼&lt;br /&gt;&lt;br /&gt;You don't have to leave. 떠나지 않아도 돼.&lt;br /&gt;You don't have to stay. 더 있지 않아도 돼.&lt;br /&gt;You don't have to eat it. 그거 먹지 않아도 돼.&lt;br /&gt;You don't have to do anything. 아무 것도 하지 않아도 돼.&lt;br /&gt;You don't have to say anything. 아무 말도 하지 않아도 돼.&lt;br /&gt;You don't have to bring anything. 아무 것도 안 가져와도 돼.&lt;br /&gt;You don't have to come with me. 나랑 같이 안 가도 돼.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;35. It's time to... ...할 시간이야&lt;br /&gt;&lt;br /&gt;It's time to leave. 가야 할 시간이야.&lt;br /&gt;It's time to go home. 집에 갈 시간이야.&lt;br /&gt;It's time to go to school. 학교 갈 시간이야.&lt;br /&gt;It's time to have lunch. 점심 먹을 시간이야.&lt;br /&gt;It's time to say goodbye. 헤어질 시간이야.&lt;br /&gt;It's time to take a break. 휴식 시간이야.&lt;br /&gt;It's time to brush your teeth. 이 닦을 시간이야.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;36. What if...? ...하면 어떡하지?&lt;br /&gt;&lt;br /&gt;What if I'm late? 늦으면 어떡하지?&lt;br /&gt;What if I lose it? 그걸 잃어버리면 어떡하지?&lt;br /&gt;What if I can't do it? 내가 이걸 못 하면 어떡하지?&lt;br /&gt;What if it snows? 눈이 오면 어떡하지?&lt;br /&gt;What if no one comes? 아무도 안 오면 어떡하지?&lt;br /&gt;What if he says 'No'? 그 사람이 싫다고 하면 어떡하지?&lt;br /&gt;What if he's not there? 그가 거기에 없으면 어떡하지?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;37. When do you plan to...? 언제 ...할 계획이야?&lt;br /&gt;&lt;br /&gt;When do you plan to leave? 언제 떠날거니?&lt;br /&gt;When do you plan to study? 언제 공부할거니?&lt;br /&gt;When do you plan to go home? 언제 집에 갈거니?&lt;br /&gt;When do you plan to graduate? 언제 졸업할거니?&lt;br /&gt;When do you plan to finish this? 이것을 언제 끝낼 계획이니?&lt;br /&gt;When do you plan to have some fun? 언제 좀 놀거니?&lt;br /&gt;When do you plan to take a vacation? 언제 휴가를 갈 계획이니?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;38. I just wanted to... 난 단지 ...하고 싶었어&lt;br /&gt;&lt;br /&gt;I just wanted to be alone. 난 단지 혼자 있고 싶었어.&lt;br /&gt;I just wanted to go home. 난 단지 집에 가고 싶었어.&lt;br /&gt;I just wanted to get my coat. 난 단지 내 코트를 가지러 갔어.&lt;br /&gt;I just wanted to see you again. 난 단지 널 다시 보고 싶었어.&lt;br /&gt;I just wanted to know the truth. 난 단지 진실을 알고 싶었어.&lt;br /&gt;I just wanted to hear you say it. 난 단지 네게 그것을 듣고 싶었어.&lt;br /&gt;I just wanted to find my cell phone. 난 단지 내 휴대폰을 찾고 싶었어.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;39. I'm thinking... 난 ...할까 생각 중이야&lt;br /&gt;&lt;br /&gt;I'm thinking about moving. 난 이사를 할까 생각 중이야.&lt;br /&gt;I'm thinking we're finished. 난 우리가 끝났다고 생각 중이야.&lt;br /&gt;I'm thinking of going to bed. 난 잠자리에 들까 생각 중이야.&lt;br /&gt;I'm thinking of riding the bus. 난 버스를 탈까 생각 중이야.&lt;br /&gt;I'm thinking I'll skip the class. 난 수업을 땡땡이 칠까 생각 중이야.&lt;br /&gt;I'm thinking about getting a job. 난 일자리를 얻을까 생각 중이야.&lt;br /&gt;I'm thinking you should go first. 난 네가 먼저 가야 한다고 생각 중이야.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;40. Do you want me to...? 넌 내가 ...하기를 원해?&lt;br /&gt;&lt;br /&gt;Do you want me to drive? 내가 운전할까?&lt;br /&gt;Do you want me to fix that? 저것을 고쳐줄까?&lt;br /&gt;Do you want me to call you? 내가 전화할까?&lt;br /&gt;Do you want me to meet you? 한번 만날까?&lt;br /&gt;Do you want me to help you? 내가 도와줄까?&lt;br /&gt;Do you want me to get some more? 내가 좀더 갖다줄까?&lt;br /&gt;Do you want me to wash the dishes? 내가 설거지 해줄까?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;41. I should have... 내가 ...했어야 했는데&lt;br /&gt;&lt;br /&gt;I should have worn a coat. 코트를 입었어야 했는데.&lt;br /&gt;I should have come sooner. 내가 곧 왔었어야 했는데.&lt;br /&gt;I should have reminded him. 내가 그에게 알려줬어야 했는데.&lt;br /&gt;I should have told the truth. 진실을 말했어야 했는데.&lt;br /&gt;I should have called you. 내가 너에게 전화 했었어야 했는데.&lt;br /&gt;I should have studied hard. 공부를 열심히 했어야 했는데.&lt;br /&gt;I should have listened to her. 그녀의 말을 들었어야 했는데.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;42. Is there anyone who...? 혹시 ...할 사람 있어요?&lt;br /&gt;&lt;br /&gt;Is there anyone who can cook? 요리할 수 있는 사람 있나요?&lt;br /&gt;Is there anyone who can fix it? 혹시 이것을 고칠 사람이 있나요?&lt;br /&gt;Is there anyone who can help me? 저를 도와줄 사람 있나요?&lt;br /&gt;Is there anyone who can speaks English? 영어를 할 줄 아는 사람 있나요?&lt;br /&gt;Is there anyone who knows Peter? 혹시 Peter를 아는 사람 있나요?&lt;br /&gt;Is there anyone who knows how to do this? 이거 어떻게 하는지 아는 사람 있나요?&lt;br /&gt;Is there anyone who knows about computers? 컴퓨터에 대해 아는 사람 있나요?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;43. Have you ever... ...한 적 있어?&lt;br /&gt;&lt;br /&gt;Have you ever seen a whale? 고래 본 적 있어?&lt;br /&gt;Have you ever played pool? 포켓볼 쳐본 적 있어?&lt;br /&gt;Have you ever eaten sushi? 초밥 먹어본 적 있어?&lt;br /&gt;Have you ever been to a zoo? 동물원 가본 적 있어?&lt;br /&gt;Have you ever cooked before? 요리해본 적 있어?&lt;br /&gt;Have you ever driven a car before? 운전해본 적 있어?&lt;br /&gt;Have you ever traveled overseas? 해외여행 해본 적 있어?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;44. I was wondering if... ...할지 궁금했어&lt;br /&gt;&lt;br /&gt;I was wondering if you'd call. 네가 전화올지 궁금했어.&lt;br /&gt;I was wondering if you'd like it. 네가 좋아할지 걱정했어.&lt;br /&gt;I was wondering if you'd help me. 네가 도와줄지 걱정했어.&lt;br /&gt;I was wondering if you'd go out with me. 나랑 데이트할지 걱정했어.&lt;br /&gt;I was wondering if you'd remember. 네가 기억하고 있을지 궁금했어.&lt;br /&gt;I was wondering if he'd be here. 그가 여기에 올지 궁금했어.&lt;br /&gt;I was wondering if I could take a break. 쉴 수가 있을지 궁금했어.&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;45. Is it possible that...? ...하는 게 가능해?&lt;br /&gt;&lt;br /&gt;Is it possible that he's married? 그 남자가 결혼했다는 게 가능해?&lt;br /&gt;Is it possible that I got fired? 내가 해고됐다는 게 가능해?&lt;br /&gt;Is it possible that it was canceled? 그게 취소되었다는 게 가능해?&lt;br /&gt;Is it possible that the battery's dead? 배터리가 나갔다는 게 가능해?&lt;br /&gt;Is it possible that we'd get caught? 우리가 잡혔다는 게 가능해?&lt;br /&gt;Is it possible that they've forgotten? 그 사람들이 잊어버렸다는 게 가능해?&lt;br /&gt;Is it possible that we've the wrong address? 우리가 틀린 주소를 갖고 있다는 게 가능해?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;46. Is it okay if...? ...해도 괜찮겠어요?&lt;br /&gt;&lt;br /&gt;Is it okay if I'm late? 제가 늦어도 괜찮겠어요?&lt;br /&gt;Is it okay if I go first? 제가 먼저 가도 괜찮겠어요?&lt;br /&gt;Is it okay if I go home early? 제가 일찍 가도 괜찮겠어요?&lt;br /&gt;Is it okay if I make a call first? 제가 전화를 먼저 해도 될까요?&lt;br /&gt;Is it okay if I have one more? 제가 하나 더 가져도 괜찮겠어요?&lt;br /&gt;Is it okay if we leave now? 우리가 지금 떠나도 괜찮겠어요?&lt;br /&gt;Is it okay if we do this later? 우리가 이걸 나중에 해도 괜찮겠어요?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;47. Would you mind if...? ...해도 될까요?&lt;br /&gt;&lt;br /&gt;Would you mind if we leave? 우리가 떠나도 될까요?&lt;br /&gt;Would you mind if we didn't go? 우리가 안 가도 될까요?&lt;br /&gt;Would you mind if we go tomorrow? 우리 내일 가도 될까요?&lt;br /&gt;Would you mind if I drive? 내가 운전해도 될까요?&lt;br /&gt;Would you mind if I left early? 내가 일찍 떠나도 될까요?&lt;br /&gt;Would you mind if I'm a little late? 내가 좀 늦어도 될까요?&lt;br /&gt;Would you mind if I listened to some music? 내가 음악을 좀 들어도 될까요?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;48. How come...? 어떻게 ...할 수 있지?&lt;br /&gt;&lt;br /&gt;How come it's so hard? 왜 이게 이렇게 힘들지?&lt;br /&gt;How come I always get sick? 왜 난 항상 아플까?&lt;br /&gt;How come I have to do it? 어째서 내가 이것을 해야 하지?&lt;br /&gt;How come I failed the exam? 왜 내가 시험에서 떨어졌지?&lt;br /&gt;How come we have to go? 어째서 우리가 가야 하지?&lt;br /&gt;How come you're always late? 왜 넌 항상 늦니?&lt;br /&gt;How come you never listen to me? 왜 넌 항상 내 말을 안 듣지?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;49. What makes you...? 너는 왜 ... ?&lt;br /&gt;&lt;br /&gt;What makes you laugh? 너는 왜 웃는거니?&lt;br /&gt;What makes you happy? 너는 왜 행복하니?&lt;br /&gt;What makes you crying? 너는 왜 우는거니?&lt;br /&gt;What makes you live here? 너는 왜 여기에 사니?&lt;br /&gt;What makes you feel that way? 너는 왜 그렇게 느끼니?&lt;br /&gt;What makes you think that? 너는 왜 그렇게 생각하니?&lt;br /&gt;What makes you so sure? 너는 왜 그렇게 확신하니?&lt;br /&gt;&lt;br /&gt;　&lt;br /&gt;50. I can't believe... 난 ...를 믿을 수 없어&lt;br /&gt;&lt;br /&gt;I can't believe it. 난 그것을 믿을 수 없어.&lt;br /&gt;I can't believe it's free. 난 그것이 공짜라는 게 믿을 수 없어.&lt;br /&gt;I can't believe he's alive. 난 그가 살아있는 것을 믿을 수 없어.&lt;br /&gt;I can't believe he got married. 난 그가 결혼했다는 걸 믿을 없어.&lt;br /&gt;I can't believe we're here. 난 우리가 여기 있다는 게 믿을 수 없어.&lt;br /&gt;I can't believe they did that. 난 그들이 그렇게 했다는 걸 믿을 수 없어.&lt;br /&gt;I can't believe she said that. 난 그녀가 그렇게 말했다는 걸 믿을 수 없어.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>english</category>
      <category>영어회화</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2876</guid>
      <comments>https://uple.tistory.com/2876#entry2876comment</comments>
      <pubDate>Sat, 8 Jul 2023 23:15:22 +0900</pubDate>
    </item>
    <item>
      <title>posix_spawn</title>
      <link>https://uple.tistory.com/2875</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;#include&amp;nbsp;&amp;lt;stdlib.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt; &lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;unistd.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;spawn.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;sys/wait.h&amp;gt; &lt;br /&gt;&lt;br /&gt;extern&amp;nbsp;char&amp;nbsp;**environ; &lt;br /&gt;&lt;br /&gt;void&amp;nbsp;run_cmd(char&amp;nbsp;*cmd) &lt;br /&gt;{ &lt;br /&gt;status&amp;nbsp;=&amp;nbsp;posix_spawn(&amp;amp;pid,&amp;nbsp;&quot;/bin/sh&quot;,&amp;nbsp;NULL,&amp;nbsp;NULL,&amp;nbsp;argv,&amp;nbsp;environ); &lt;br /&gt;&lt;br /&gt;if(status&amp;nbsp;==&amp;nbsp;0){ &lt;br /&gt;printf(&quot;Child&amp;nbsp;pid:&amp;nbsp;%i\n&quot;,&amp;nbsp;pid); &lt;br /&gt;&lt;br /&gt;if(waitpid(pid,&amp;nbsp;&amp;amp;status,&amp;nbsp;0)&amp;nbsp;!=&amp;nbsp;-1){ &lt;br /&gt;printf(&quot;Child&amp;nbsp;exited&amp;nbsp;with&amp;nbsp;status&amp;nbsp;%i\n&quot;,&amp;nbsp;status); &lt;br /&gt;} &lt;br /&gt;else{ &lt;br /&gt;do{ &lt;br /&gt;if(waitpid(pid,&amp;nbsp;&amp;amp;status,&amp;nbsp;0)&amp;nbsp;!=&amp;nbsp;-1){ &lt;br /&gt;printf(&quot;Child&amp;nbsp;status&amp;nbsp;%d\n&quot;,&amp;nbsp;WEXITSTATUS(status)); &lt;br /&gt;} &lt;br /&gt;else{ &lt;br /&gt;perror(&quot;waitpid&quot;); &lt;br /&gt;} &lt;br /&gt;exit(1); &lt;br /&gt;} &lt;br /&gt;} &lt;br /&gt;while(!WIFEXITED(status)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;!WIFSIGNALED(status)); &lt;br /&gt;} &lt;br /&gt;else{ &lt;br /&gt;printf(&quot;posix_spawn:&amp;nbsp;%s\n&quot;,&amp;nbsp;strerror(status)); &lt;br /&gt;} &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;void&amp;nbsp;main(int&amp;nbsp;argc,&amp;nbsp;char*&amp;nbsp;argv[]) &lt;br /&gt;{ &lt;br /&gt;run_cmd(argv[1]); &lt;br /&gt;return; &lt;br /&gt;} &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/ctrYGR/btsmum7KoaF/IZ5o4GPwLiikSLqTZEvNuk/posix_spawn_test.c?attach=1&amp;amp;knm=tfile.c&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;posix_spawn_test.c&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2875</guid>
      <comments>https://uple.tistory.com/2875#entry2875comment</comments>
      <pubDate>Tue, 4 Jul 2023 20:52:31 +0900</pubDate>
    </item>
    <item>
      <title>AI 검색</title>
      <link>https://uple.tistory.com/2873</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Bard&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://bard.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://bard.google.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687964310578&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;&amp;lrm;Google의 AI 실험 버전인 Bard 사용해 보기&quot; data-og-description=&quot;Bard는 창의적이고 유용한 파트너로서, 상상력을 마음껏 발휘하고 생산성을 높이며 아이디어를 실현하도록 도와줍니다.&quot; data-og-host=&quot;bard.google.com&quot; data-og-source-url=&quot;https://bard.google.com/&quot; data-og-url=&quot;https://bard.google.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/g9LeB/hyS9S7WHhU/vjXBuHPeKGfXaWIV9u7kA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cZCrAh/hyS8tBYgml/ha7TOCthMyGB9WKqOFQ4j1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://bard.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bard.google.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/g9LeB/hyS9S7WHhU/vjXBuHPeKGfXaWIV9u7kA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cZCrAh/hyS8tBYgml/ha7TOCthMyGB9WKqOFQ4j1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lrm;Google의 AI 실험 버전인 Bard 사용해 보기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Bard는 창의적이고 유용한 파트너로서, 상상력을 마음껏 발휘하고 생산성을 높이며 아이디어를 실현하도록 도와줍니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bard.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f7f7f8; color: #000000; text-align: center;&quot;&gt;ChatGPT&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chat.openai.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://chat.openai.com/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT_COMPUTER</category>
      <category>Bard</category>
      <category>ChatGPT</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2873</guid>
      <comments>https://uple.tistory.com/2873#entry2873comment</comments>
      <pubDate>Thu, 29 Jun 2023 00:00:49 +0900</pubDate>
    </item>
    <item>
      <title>C 언어에서 CRC16을 구현하는 방법</title>
      <link>https://uple.tistory.com/2872</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;C&amp;nbsp;언어에서&amp;nbsp;CRC16을&amp;nbsp;구현하는&amp;nbsp;방법 &lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;stdlib.h&amp;gt; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;CRC-16&amp;nbsp;다항식 &lt;br /&gt;const&amp;nbsp;int&amp;nbsp;CRC16_POLYNOMIAL&amp;nbsp;=&amp;nbsp;0x8005; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;CRC16&amp;nbsp;계산 &lt;br /&gt;int&amp;nbsp;crc16(const&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;*data,&amp;nbsp;int&amp;nbsp;len)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;crc&amp;nbsp;=&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;len;&amp;nbsp;i++)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crc&amp;nbsp;=&amp;nbsp;(crc&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;8)&amp;nbsp;^&amp;nbsp;data[i]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;j&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;j&amp;nbsp;&amp;lt;&amp;nbsp;8;&amp;nbsp;j++)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(crc&amp;nbsp;&amp;amp;&amp;nbsp;0x8000)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crc&amp;nbsp;=&amp;nbsp;crc&amp;nbsp;^&amp;nbsp;CRC16_POLYNOMIAL; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crc&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;crc; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;int&amp;nbsp;main(void)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;data[]&amp;nbsp;=&amp;nbsp;{0x01,&amp;nbsp;0x02,&amp;nbsp;0x03,&amp;nbsp;0x04,&amp;nbsp;0x05}; &lt;br /&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;len&amp;nbsp;=&amp;nbsp;sizeof(data)&amp;nbsp;/&amp;nbsp;sizeof(data[0]); &lt;br /&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;crc&amp;nbsp;=&amp;nbsp;crc16(data,&amp;nbsp;len); &lt;br /&gt;&amp;nbsp;&amp;nbsp;printf(&quot;CRC-16:&amp;nbsp;%x\n&quot;,&amp;nbsp;crc); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이&amp;nbsp;코드는&amp;nbsp;&quot;0x0102030405&quot;라는&amp;nbsp;데이터의&amp;nbsp;CRC-16을&amp;nbsp;계산하고,&amp;nbsp;그&amp;nbsp;결과는&amp;nbsp;&quot;0x29b1&quot;입니다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;===============================&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL:&amp;nbsp; &lt;a href=&quot;https://devcoons.com/crc16-simple-algorithm-c/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://devcoons.com/crc16-simple-algorithm-c/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;crc.h 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #000000; color: #303030; text-align: start;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/* CRC_H_ */

#ifndef CRC_H_
#define CRC_H_

#ifdef __cplusplus
extern &quot;C&quot; {
#endif

#include &amp;lt;string.h&amp;gt;
#include &amp;lt;inttypes.h&amp;gt;

static const uint16_t crc16_table[256] = {
          0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,
          0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,
          0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,
          0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,
          0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,
          0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,
          0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,
          0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,
          0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,
          0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,
          0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,
          0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,
          0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,
          0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,
          0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,
          0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,
          0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,
          0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,
          0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,
          0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,
          0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,
          0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,
          0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,
          0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,
          0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,
          0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,
          0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,
          0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,
          0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,
          0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,
          0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
          0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040
  };

static inline uint16_t crc16_byte(uint16_t crc, uint8_t data)
{
   return (crc &amp;gt;&amp;gt; 8) ^ crc16_table[(crc ^ data) &amp;amp; 0xff];
}

uint16_t crc16(uint16_t, uint8_t *, size_t);

#ifdef __cplusplus
}
#endif
#endif 

/* CRC_H_ */&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;crc.c 파일&lt;/p&gt;
&lt;pre class=&quot;arduino&quot; style=&quot;background-color: #000000; color: #303030; text-align: start;&quot;&gt;&lt;code&gt;/* CRC_C_ */

#include &quot;crc.h&quot;

uint16_t crc16(uint16_t crc, uint8_t *buffer, size_t len)
{
    while (len--)
        crc = crc16_byte(crc, *buffer++);
    return crc;
}

/* CRC_C_ */&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;####&amp;nbsp;CRC-16&amp;nbsp;생성&amp;nbsp;방법&amp;nbsp;##### &lt;br /&gt;&lt;br /&gt;CRC-16&amp;nbsp;&amp;nbsp;&amp;nbsp;CCITT &lt;br /&gt;&lt;br /&gt;x16&amp;nbsp;+&amp;nbsp;x12&amp;nbsp;+&amp;nbsp;x5&amp;nbsp;+&amp;nbsp;1 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#define&amp;nbsp;CRC16_INIT_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xffff &lt;br /&gt;#define&amp;nbsp;CRC16_XOR_VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0000 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;============&amp;nbsp;만들기&amp;nbsp;&amp;nbsp;========================== &lt;br /&gt;static&amp;nbsp;unsigned&amp;nbsp;short&amp;nbsp;crctable[256]; &lt;br /&gt;&lt;br /&gt;/* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Generate&amp;nbsp;a&amp;nbsp;table&amp;nbsp;for&amp;nbsp;a&amp;nbsp;byte-wise&amp;nbsp;16-bit&amp;nbsp;CRC&amp;nbsp;calculation&amp;nbsp;on&amp;nbsp;the&amp;nbsp;polynomial: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;x^16&amp;nbsp;+&amp;nbsp;x^12&amp;nbsp;+&amp;nbsp;x^5&amp;nbsp;+&amp;nbsp;x^0 &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;void&amp;nbsp;make_crc_table(&amp;nbsp;void&amp;nbsp;)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i,&amp;nbsp;j; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;long&amp;nbsp;poly,&amp;nbsp;c; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;terms&amp;nbsp;of&amp;nbsp;polynomial&amp;nbsp;defining&amp;nbsp;this&amp;nbsp;crc&amp;nbsp;(except&amp;nbsp;x^16):&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;const&amp;nbsp;byte&amp;nbsp;p[]&amp;nbsp;=&amp;nbsp;{0,5,12}; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;make&amp;nbsp;exclusive-or&amp;nbsp;pattern&amp;nbsp;from&amp;nbsp;polynomial&amp;nbsp;(0x1021)&amp;nbsp;*/ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;poly&amp;nbsp;=&amp;nbsp;0L; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;sizeof(&amp;nbsp;p&amp;nbsp;)&amp;nbsp;/&amp;nbsp;sizeof(&amp;nbsp;byte&amp;nbsp;);&amp;nbsp;i++&amp;nbsp;)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;poly&amp;nbsp;|=&amp;nbsp;1L&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;p[i]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;256;&amp;nbsp;i++&amp;nbsp;)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;=&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;8; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(&amp;nbsp;j&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;j&amp;nbsp;&amp;lt;&amp;nbsp;8;&amp;nbsp;j++&amp;nbsp;)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;=&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&amp;amp;&amp;nbsp;0x8000&amp;nbsp;)&amp;nbsp;?&amp;nbsp;poly&amp;nbsp;^&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;1&amp;nbsp;)&amp;nbsp;:&amp;nbsp;(&amp;nbsp;c&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;1&amp;nbsp;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crctable[i]&amp;nbsp;=&amp;nbsp;(unsigned&amp;nbsp;short)&amp;nbsp;c; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* &lt;br /&gt;&amp;nbsp;&amp;nbsp;Table&amp;nbsp;of&amp;nbsp;CRC-16's&amp;nbsp;of&amp;nbsp;all&amp;nbsp;single-byte&amp;nbsp;values&amp;nbsp;(made&amp;nbsp;by&amp;nbsp;make_crc_table) &lt;br /&gt;*/ &lt;br /&gt;static&amp;nbsp;unsigned&amp;nbsp;short&amp;nbsp;crctable[256]&amp;nbsp;=&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0000,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1021,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2042,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3063,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4084,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x50a5,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x60c6,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x70e7, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8108,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9129,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xa14a,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xb16b,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xc18c,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xd1ad,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xe1ce,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xf1ef, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1231,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0210,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3273,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2252,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x52b5,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4294,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x72f7,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x62d6, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9339,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8318,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xb37b,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xa35a,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xd3bd,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xc39c,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xf3ff,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xe3de, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2462,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3443,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0420,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1401,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x64e6,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x74c7,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x44a4,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5485, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xa56a,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xb54b,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8528,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9509,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xe5ee,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xf5cf,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xc5ac,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xd58d, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3653,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2672,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1611,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0630,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x76d7,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x66f6,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5695,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x46b4, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xb75b,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xa77a,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9719,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8738,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xf7df,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xe7fe,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xd79d,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xc7bc, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x48c4,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x58e5,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6886,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x78a7,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0840,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1861,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2802,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3823, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xc9cc,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xd9ed,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xe98e,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xf9af,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8948,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9969,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xa90a,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xb92b, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5af5,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4ad4,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x7ab7,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6a96,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1a71,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0a50,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3a33,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2a12, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xdbfd,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xcbdc,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xfbbf,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xeb9e,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9b79,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8b58,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xbb3b,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xab1a, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6ca6,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x7c87,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4ce4,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5cc5,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2c22,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3c03,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0c60,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1c41, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xedae,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xfd8f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xcdec,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xddcd,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xad2a,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xbd0b,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8d68,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9d49, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x7e97,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6eb6,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5ed5,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4ef4,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3e13,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2e32,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1e51,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0e70, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xff9f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xefbe,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xdfdd,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xcffc,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xbf1b,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xaf3a,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9f59,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8f78, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9188,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x81a9,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xb1ca,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xa1eb,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xd10c,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xc12d,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xf14e,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xe16f, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1080,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x00a1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x30c2,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x20e3,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5004,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4025,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x7046,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6067, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x83b9,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9398,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xa3fb,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xb3da,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xc33d,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xd31c,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xe37f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xf35e, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x02b1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1290,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x22f3,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x32d2,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4235,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5214,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6277,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x7256, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xb5ea,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xa5cb,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x95a8,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8589,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xf56e,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xe54f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xd52c,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xc50d, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x34e2,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x24c3,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x14a0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0481,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x7466,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6447,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5424,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4405, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xa7db,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xb7fa,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8799,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x97b8,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xe75f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xf77e,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xc71d,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xd73c, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x26d3,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x36f2,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0691,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x16b0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6657,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x7676,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4615,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5634, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xd94c,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xc96d,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xf90e,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xe92f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x99c8,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x89e9,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xb98a,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xa9ab, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5844,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4865,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x7806,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6827,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x18c0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x08e1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3882,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x28a3, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xcb7d,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xdb5c,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xeb3f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xfb1e,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8bf9,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9bd8,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xabbb,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xbb9a, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4a75,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5a54,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6a37,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x7a16,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0af1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1ad0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2ab3,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3a92, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xfd2e,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xed0f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xdd6c,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xcd4d,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xbdaa,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xad8b,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9de8,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8dc9, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x7c26,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6c07,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5c64,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4c45,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3ca2,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2c83,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1ce0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0cc1, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xef1f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xff3e,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xcf5d,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xdf7c,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xaf9b,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xbfba,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x8fd9,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x9ff8, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x6e17,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x7e36,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x4e55,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x5e74,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2e93,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3eb2,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0ed1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1ef0 &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <category>CRC16</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2872</guid>
      <comments>https://uple.tistory.com/2872#entry2872comment</comments>
      <pubDate>Wed, 28 Jun 2023 23:15:43 +0900</pubDate>
    </item>
    <item>
      <title>C source code for base64 encoding / C source code for base64 decoding</title>
      <link>https://uple.tistory.com/2871</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;stdlib.h&amp;gt; &lt;br /&gt;&lt;br /&gt;const&amp;nbsp;char&amp;nbsp;base64_table[]&amp;nbsp;=&amp;nbsp;&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;; &lt;br /&gt;&lt;br /&gt;void&amp;nbsp;base64_encode(const&amp;nbsp;char&amp;nbsp;*input,&amp;nbsp;char&amp;nbsp;*output)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i,&amp;nbsp;j; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;0,&amp;nbsp;j&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;input[i];&amp;nbsp;i&amp;nbsp;+=&amp;nbsp;3)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output[j++]&amp;nbsp;=&amp;nbsp;base64_table[input[i]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;2]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output[j++]&amp;nbsp;=&amp;nbsp;base64_table[((input[i]&amp;nbsp;&amp;amp;&amp;nbsp;0x03)&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;4)&amp;nbsp;|&amp;nbsp;(input[i&amp;nbsp;+&amp;nbsp;1]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;4)]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output[j++]&amp;nbsp;=&amp;nbsp;base64_table[((input[i&amp;nbsp;+&amp;nbsp;1]&amp;nbsp;&amp;amp;&amp;nbsp;0x0f)&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;2)&amp;nbsp;|&amp;nbsp;(input[i&amp;nbsp;+&amp;nbsp;2]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;6)]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output[j++]&amp;nbsp;=&amp;nbsp;base64_table[input[i&amp;nbsp;+&amp;nbsp;2]&amp;nbsp;&amp;amp;&amp;nbsp;0x3f]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;output[j]&amp;nbsp;=&amp;nbsp;'\0'; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;int&amp;nbsp;main(void)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;input[]&amp;nbsp;=&amp;nbsp;&quot;Hello,&amp;nbsp;world!&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;output[1024]; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;base64_encode(input,&amp;nbsp;output); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;printf(&quot;Base64&amp;nbsp;encoded&amp;nbsp;string:&amp;nbsp;%s\n&quot;,&amp;nbsp;output); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;========================== &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;stdlib.h&amp;gt; &lt;br /&gt;&lt;br /&gt;const&amp;nbsp;char&amp;nbsp;base64_table[]&amp;nbsp;=&amp;nbsp;&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;; &lt;br /&gt;&lt;br /&gt;void&amp;nbsp;base64_decode(const&amp;nbsp;char&amp;nbsp;*input,&amp;nbsp;char&amp;nbsp;*output)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i,&amp;nbsp;j; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;0,&amp;nbsp;j&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;input[i];&amp;nbsp;i&amp;nbsp;+=&amp;nbsp;4)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output[j++]&amp;nbsp;=&amp;nbsp;(base64_table[input[i]]&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;2)&amp;nbsp;|&amp;nbsp;(base64_table[input[i&amp;nbsp;+&amp;nbsp;1]]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;4); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(input[i&amp;nbsp;+&amp;nbsp;2]&amp;nbsp;!=&amp;nbsp;'=')&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output[j++]&amp;nbsp;=&amp;nbsp;((base64_table[input[i&amp;nbsp;+&amp;nbsp;1]]&amp;nbsp;&amp;amp;&amp;nbsp;0x0f)&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;4)&amp;nbsp;|&amp;nbsp;(base64_table[input[i&amp;nbsp;+&amp;nbsp;2]]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;2); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(input[i&amp;nbsp;+&amp;nbsp;3]&amp;nbsp;!=&amp;nbsp;'=')&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output[j++]&amp;nbsp;=&amp;nbsp;((base64_table[input[i&amp;nbsp;+&amp;nbsp;2]]&amp;nbsp;&amp;amp;&amp;nbsp;0x03)&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;6)&amp;nbsp;|&amp;nbsp;base64_table[input[i&amp;nbsp;+&amp;nbsp;3]]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;output[j]&amp;nbsp;=&amp;nbsp;'\0'; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;int&amp;nbsp;main(void)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;input[]&amp;nbsp;=&amp;nbsp;&quot;SGVsbG8sIHdvcmxkIQ==&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;output[1024]; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;base64_decode(input,&amp;nbsp;output); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;printf(&quot;Base64&amp;nbsp;decoded&amp;nbsp;string:&amp;nbsp;%s\n&quot;,&amp;nbsp;output); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <category>base64 decode</category>
      <category>base64 encode</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2871</guid>
      <comments>https://uple.tistory.com/2871#entry2871comment</comments>
      <pubDate>Wed, 28 Jun 2023 23:14:31 +0900</pubDate>
    </item>
    <item>
      <title>CALL BY VALUE / CALL BY REFERENCE</title>
      <link>https://uple.tistory.com/2870</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;==================== &lt;br /&gt;변수의&amp;nbsp;값을&amp;nbsp;인수로&amp;nbsp;주는&amp;nbsp;경우 &lt;br /&gt;==================== &lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;br /&gt;&lt;br /&gt;void&amp;nbsp;swap(int&amp;nbsp;x,&amp;nbsp;int&amp;nbsp;y);&amp;nbsp;//&amp;nbsp;두&amp;nbsp;변수의&amp;nbsp;값을&amp;nbsp;바꾸는&amp;nbsp;함수&amp;nbsp;선언 &lt;br /&gt;&lt;br /&gt;int&amp;nbsp;main(void){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;a&amp;nbsp;=&amp;nbsp;10,&amp;nbsp;b&amp;nbsp;=&amp;nbsp;20;&amp;nbsp;//&amp;nbsp;변수&amp;nbsp;선언과&amp;nbsp;초기화 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;swap(a,&amp;nbsp;b);&amp;nbsp;//&amp;nbsp;a,&amp;nbsp;b의&amp;nbsp;값을&amp;nbsp;복사해서&amp;nbsp;전달 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;ldquo;a:%d,&amp;nbsp;b:%d\n&amp;rdquo;,&amp;nbsp;a,&amp;nbsp;b);&amp;nbsp;//&amp;nbsp;변수&amp;nbsp;a,&amp;nbsp;b&amp;nbsp;출력 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;void&amp;nbsp;swap(int&amp;nbsp;x,&amp;nbsp;int&amp;nbsp;y){&amp;nbsp;//&amp;nbsp;인수&amp;nbsp;a,&amp;nbsp;b의&amp;nbsp;값을&amp;nbsp;x,&amp;nbsp;y에&amp;nbsp;복사해서&amp;nbsp;저장 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;temp;&amp;nbsp;//&amp;nbsp;교환을&amp;nbsp;위한&amp;nbsp;변수 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;temp&amp;nbsp;=&amp;nbsp;x;&amp;nbsp;//&amp;nbsp;temp에&amp;nbsp;x&amp;nbsp;값&amp;nbsp;저장 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x&amp;nbsp;=&amp;nbsp;y;&amp;nbsp;//&amp;nbsp;x에&amp;nbsp;y&amp;nbsp;값&amp;nbsp;저장 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y&amp;nbsp;=&amp;nbsp;temp;&amp;nbsp;//&amp;nbsp;y에&amp;nbsp;temp&amp;nbsp;값&amp;nbsp;저장 &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;==================== &lt;br /&gt;포인터를&amp;nbsp;사용한&amp;nbsp;두&amp;nbsp;변수&amp;nbsp;값의&amp;nbsp;교환 &lt;br /&gt;==================== &lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt; &lt;br /&gt;&lt;br /&gt;void&amp;nbsp;swap(int&amp;nbsp;*pa,&amp;nbsp;int&amp;nbsp;*pb);&amp;nbsp;//&amp;nbsp;두&amp;nbsp;변수의&amp;nbsp;값을&amp;nbsp;바꾸는&amp;nbsp;함수의&amp;nbsp;선언 &lt;br /&gt;&lt;br /&gt;int&amp;nbsp;main(void){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;a&amp;nbsp;=&amp;nbsp;10,&amp;nbsp;b&amp;nbsp;=&amp;nbsp;20;&amp;nbsp;//&amp;nbsp;변수&amp;nbsp;선언과&amp;nbsp;초기화 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;swap(&amp;amp;a,&amp;nbsp;&amp;amp;b);&amp;nbsp;//&amp;nbsp;a,&amp;nbsp;b의&amp;nbsp;주소를&amp;nbsp;인수로&amp;nbsp;주고&amp;nbsp;함수&amp;nbsp;호출 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;ldquo;a:%d,&amp;nbsp;b:%d\n&amp;rdquo;,&amp;nbsp;a,&amp;nbsp;b);&amp;nbsp;//&amp;nbsp;변수&amp;nbsp;a,&amp;nbsp;b&amp;nbsp;출력 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;void&amp;nbsp;swap(int&amp;nbsp;*pa,&amp;nbsp;int&amp;nbsp;*pb){&amp;nbsp;//&amp;nbsp;매개변수로&amp;nbsp;포인터&amp;nbsp;선언 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;temp;&amp;nbsp;//&amp;nbsp;교환을&amp;nbsp;위한&amp;nbsp;임시&amp;nbsp;변수 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;temp&amp;nbsp;=&amp;nbsp;*pa;&amp;nbsp;//&amp;nbsp;temp에&amp;nbsp;pa가&amp;nbsp;가리키는&amp;nbsp;변수의&amp;nbsp;값&amp;nbsp;저장 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*pa&amp;nbsp;=&amp;nbsp;*pb;&amp;nbsp;//&amp;nbsp;pa가&amp;nbsp;가리키는&amp;nbsp;변수에&amp;nbsp;pb가&amp;nbsp;가리키는&amp;nbsp;변수의&amp;nbsp;값&amp;nbsp;저장 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*pb&amp;nbsp;=&amp;nbsp;temp;&amp;nbsp;//&amp;nbsp;pb가&amp;nbsp;가리키는&amp;nbsp;변수에&amp;nbsp;temp&amp;nbsp;값&amp;nbsp;저장 &lt;br /&gt;} &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2870</guid>
      <comments>https://uple.tistory.com/2870#entry2870comment</comments>
      <pubDate>Wed, 28 Jun 2023 22:50:16 +0900</pubDate>
    </item>
    <item>
      <title>BASE64_SIZE</title>
      <link>https://uple.tistory.com/2869</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;#define&amp;nbsp;BASE64_SIZE(x)&amp;nbsp;&amp;nbsp;(((x)+2)&amp;nbsp;/&amp;nbsp;3&amp;nbsp;*&amp;nbsp;4&amp;nbsp;+&amp;nbsp;1)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2869</guid>
      <comments>https://uple.tistory.com/2869#entry2869comment</comments>
      <pubDate>Wed, 28 Jun 2023 22:25:10 +0900</pubDate>
    </item>
    <item>
      <title>신용카드등부가통신업(VAN)등록 현황('22.11.8.현재)</title>
      <link>https://uple.tistory.com/2868</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.fss.or.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.fss.or.kr&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;금융감독권&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;업무자료&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;은행.중소서민금융&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;중소서민금융업무자료&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/zoV4D/btscmLkgzdv/XacN1Y1kcdD00dKqNMpqzK/%EC%8B%A0%EC%9A%A9%EC%B9%B4%EB%93%9C%EB%93%B1%EB%B6%80%EA%B0%80%ED%86%B5%EC%8B%A0%EC%97%85%28VAN%29%20%EB%93%B1%EB%A1%9D%20%ED%98%84%ED%99%A9%28%2722.11.8.%20%ED%98%84%EC%9E%AC%29.xlsx?attach=1&amp;amp;knm=tfile.xlsx&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;신용카드등부가통신업(VAN) 등록 현황('22.11.8. 현재).xlsx&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.02MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>finance</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2868</guid>
      <comments>https://uple.tistory.com/2868#entry2868comment</comments>
      <pubDate>Mon, 24 Apr 2023 23:27:40 +0900</pubDate>
    </item>
    <item>
      <title>Base64</title>
      <link>https://uple.tistory.com/2867</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;base64.h 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-----------------------&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#ifndef&amp;nbsp;_BASE64_H_&lt;br /&gt;#define&amp;nbsp;_BASE64_H_&lt;br /&gt;&lt;br /&gt;#ifdef&amp;nbsp;__cplusplus&lt;br /&gt;extern&amp;nbsp;&quot;C&quot;&amp;nbsp;{&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;int&amp;nbsp;Base64encode_len(int&amp;nbsp;len);&lt;br /&gt;int&amp;nbsp;Base64encode(char&amp;nbsp;*&amp;nbsp;coded_dst,&amp;nbsp;const&amp;nbsp;char&amp;nbsp;*plain_src,int&amp;nbsp;len_plain_src);&lt;br /&gt;&lt;br /&gt;int&amp;nbsp;Base64decode_len(const&amp;nbsp;char&amp;nbsp;*&amp;nbsp;coded_src);&lt;br /&gt;int&amp;nbsp;Base64decode(char&amp;nbsp;*&amp;nbsp;plain_dst,&amp;nbsp;const&amp;nbsp;char&amp;nbsp;*coded_src);&lt;br /&gt;&lt;br /&gt;#ifdef&amp;nbsp;__cplusplus&lt;br /&gt;}&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;#endif&amp;nbsp;//_BASE64_H_&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--------------------------------------------------&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;base64.c&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;------------------&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&quot;base64.h&quot;&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;aaaack&amp;nbsp;but&amp;nbsp;it's&amp;nbsp;fast&amp;nbsp;and&amp;nbsp;const&amp;nbsp;should&amp;nbsp;make&amp;nbsp;it&amp;nbsp;shared&amp;nbsp;text&amp;nbsp;page.&amp;nbsp;*/&lt;br /&gt;static&amp;nbsp;const&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;pr2six[256]&amp;nbsp;=&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;ASCII&amp;nbsp;table&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;62,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;63,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;52,&amp;nbsp;53,&amp;nbsp;54,&amp;nbsp;55,&amp;nbsp;56,&amp;nbsp;57,&amp;nbsp;58,&amp;nbsp;59,&amp;nbsp;60,&amp;nbsp;61,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;&amp;nbsp;0,&amp;nbsp;&amp;nbsp;1,&amp;nbsp;&amp;nbsp;2,&amp;nbsp;&amp;nbsp;3,&amp;nbsp;&amp;nbsp;4,&amp;nbsp;&amp;nbsp;5,&amp;nbsp;&amp;nbsp;6,&amp;nbsp;&amp;nbsp;7,&amp;nbsp;&amp;nbsp;8,&amp;nbsp;&amp;nbsp;9,&amp;nbsp;10,&amp;nbsp;11,&amp;nbsp;12,&amp;nbsp;13,&amp;nbsp;14,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;15,&amp;nbsp;16,&amp;nbsp;17,&amp;nbsp;18,&amp;nbsp;19,&amp;nbsp;20,&amp;nbsp;21,&amp;nbsp;22,&amp;nbsp;23,&amp;nbsp;24,&amp;nbsp;25,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;26,&amp;nbsp;27,&amp;nbsp;28,&amp;nbsp;29,&amp;nbsp;30,&amp;nbsp;31,&amp;nbsp;32,&amp;nbsp;33,&amp;nbsp;34,&amp;nbsp;35,&amp;nbsp;36,&amp;nbsp;37,&amp;nbsp;38,&amp;nbsp;39,&amp;nbsp;40,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;41,&amp;nbsp;42,&amp;nbsp;43,&amp;nbsp;44,&amp;nbsp;45,&amp;nbsp;46,&amp;nbsp;47,&amp;nbsp;48,&amp;nbsp;49,&amp;nbsp;50,&amp;nbsp;51,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64,&amp;nbsp;64&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;int&amp;nbsp;Base64decode_len(const&amp;nbsp;char&amp;nbsp;*bufcoded)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;nbytesdecoded;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;register&amp;nbsp;const&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;*bufin;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;register&amp;nbsp;int&amp;nbsp;nprbytes;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bufin&amp;nbsp;=&amp;nbsp;(const&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;*)&amp;nbsp;bufcoded;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;(pr2six[*(bufin++)]&amp;nbsp;&amp;lt;=&amp;nbsp;63);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nprbytes&amp;nbsp;=&amp;nbsp;(bufin&amp;nbsp;-&amp;nbsp;(const&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;*)&amp;nbsp;bufcoded)&amp;nbsp;-&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nbytesdecoded&amp;nbsp;=&amp;nbsp;((nprbytes&amp;nbsp;+&amp;nbsp;3)&amp;nbsp;/&amp;nbsp;4)&amp;nbsp;*&amp;nbsp;3;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;nbytesdecoded&amp;nbsp;+&amp;nbsp;1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int&amp;nbsp;Base64decode(char&amp;nbsp;*bufplain,&amp;nbsp;const&amp;nbsp;char&amp;nbsp;*bufcoded)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;nbytesdecoded;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;register&amp;nbsp;const&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;*bufin;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;register&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;*bufout;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;register&amp;nbsp;int&amp;nbsp;nprbytes;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bufin&amp;nbsp;=&amp;nbsp;(const&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;*)&amp;nbsp;bufcoded;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;(pr2six[*(bufin++)]&amp;nbsp;&amp;lt;=&amp;nbsp;63);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nprbytes&amp;nbsp;=&amp;nbsp;(bufin&amp;nbsp;-&amp;nbsp;(const&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;*)&amp;nbsp;bufcoded)&amp;nbsp;-&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nbytesdecoded&amp;nbsp;=&amp;nbsp;((nprbytes&amp;nbsp;+&amp;nbsp;3)&amp;nbsp;/&amp;nbsp;4)&amp;nbsp;*&amp;nbsp;3;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bufout&amp;nbsp;=&amp;nbsp;(unsigned&amp;nbsp;char&amp;nbsp;*)&amp;nbsp;bufplain;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bufin&amp;nbsp;=&amp;nbsp;(const&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;*)&amp;nbsp;bufcoded;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;(nprbytes&amp;nbsp;&amp;gt;&amp;nbsp;4)&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(bufout++)&amp;nbsp;=&amp;nbsp;(unsigned&amp;nbsp;char)&amp;nbsp;(pr2six[*bufin]&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;2&amp;nbsp;|&amp;nbsp;pr2six[bufin[1]]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(bufout++)&amp;nbsp;=&amp;nbsp;(unsigned&amp;nbsp;char)&amp;nbsp;(pr2six[bufin[1]]&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;4&amp;nbsp;|&amp;nbsp;pr2six[bufin[2]]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(bufout++)&amp;nbsp;=&amp;nbsp;(unsigned&amp;nbsp;char)&amp;nbsp;(pr2six[bufin[2]]&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;6&amp;nbsp;|&amp;nbsp;pr2six[bufin[3]]);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bufin&amp;nbsp;+=&amp;nbsp;4;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nprbytes&amp;nbsp;-=&amp;nbsp;4;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Note:&amp;nbsp;(nprbytes&amp;nbsp;==&amp;nbsp;1)&amp;nbsp;would&amp;nbsp;be&amp;nbsp;an&amp;nbsp;error,&amp;nbsp;so&amp;nbsp;just&amp;nbsp;ingore&amp;nbsp;that&amp;nbsp;case&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(nprbytes&amp;nbsp;&amp;gt;&amp;nbsp;1)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(bufout++)&amp;nbsp;=&amp;nbsp;(unsigned&amp;nbsp;char)&amp;nbsp;(pr2six[*bufin]&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;2&amp;nbsp;|&amp;nbsp;pr2six[bufin[1]]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(nprbytes&amp;nbsp;&amp;gt;&amp;nbsp;2)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(bufout++)&amp;nbsp;=&amp;nbsp;(unsigned&amp;nbsp;char)&amp;nbsp;(pr2six[bufin[1]]&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;4&amp;nbsp;|&amp;nbsp;pr2six[bufin[2]]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(nprbytes&amp;nbsp;&amp;gt;&amp;nbsp;3)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(bufout++)&amp;nbsp;=&amp;nbsp;(unsigned&amp;nbsp;char)&amp;nbsp;(pr2six[bufin[2]]&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;6&amp;nbsp;|&amp;nbsp;pr2six[bufin[3]]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(bufout++)&amp;nbsp;=&amp;nbsp;'\0';&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nbytesdecoded&amp;nbsp;-=&amp;nbsp;(4&amp;nbsp;-&amp;nbsp;nprbytes)&amp;nbsp;&amp;amp;&amp;nbsp;3;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;nbytesdecoded;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static&amp;nbsp;const&amp;nbsp;char&amp;nbsp;basis_64[]&amp;nbsp;=&amp;nbsp;&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;;&lt;br /&gt;&lt;br /&gt;int&amp;nbsp;Base64encode_len(int&amp;nbsp;len)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;((len&amp;nbsp;+&amp;nbsp;2)&amp;nbsp;/&amp;nbsp;3&amp;nbsp;*&amp;nbsp;4)&amp;nbsp;+&amp;nbsp;1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int&amp;nbsp;Base64encode(char&amp;nbsp;*encoded,&amp;nbsp;const&amp;nbsp;char&amp;nbsp;*string,&amp;nbsp;int&amp;nbsp;len)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;*p;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p&amp;nbsp;=&amp;nbsp;encoded;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;len&amp;nbsp;-&amp;nbsp;2;&amp;nbsp;i&amp;nbsp;+=&amp;nbsp;3)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*p++&amp;nbsp;=&amp;nbsp;basis_64[(string[i]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;2)&amp;nbsp;&amp;amp;&amp;nbsp;0x3F];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*p++&amp;nbsp;=&amp;nbsp;basis_64[((string[i]&amp;nbsp;&amp;amp;&amp;nbsp;0x3)&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;4)&amp;nbsp;|&amp;nbsp;((int)&amp;nbsp;(string[i&amp;nbsp;+&amp;nbsp;1]&amp;nbsp;&amp;amp;&amp;nbsp;0xF0)&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;4)];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*p++&amp;nbsp;=&amp;nbsp;basis_64[((string[i&amp;nbsp;+&amp;nbsp;1]&amp;nbsp;&amp;amp;&amp;nbsp;0xF)&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;2)&amp;nbsp;|&amp;nbsp;((int)&amp;nbsp;(string[i&amp;nbsp;+&amp;nbsp;2]&amp;nbsp;&amp;amp;&amp;nbsp;0xC0)&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;6)];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*p++&amp;nbsp;=&amp;nbsp;basis_64[string[i&amp;nbsp;+&amp;nbsp;2]&amp;nbsp;&amp;amp;&amp;nbsp;0x3F];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i&amp;nbsp;&amp;lt;&amp;nbsp;len)&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*p++&amp;nbsp;=&amp;nbsp;basis_64[(string[i]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;2)&amp;nbsp;&amp;amp;&amp;nbsp;0x3F];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i&amp;nbsp;==&amp;nbsp;(len&amp;nbsp;-&amp;nbsp;1))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*p++&amp;nbsp;=&amp;nbsp;basis_64[((string[i]&amp;nbsp;&amp;amp;&amp;nbsp;0x3)&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;4)];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*p++&amp;nbsp;=&amp;nbsp;'=';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*p++&amp;nbsp;=&amp;nbsp;basis_64[((string[i]&amp;nbsp;&amp;amp;&amp;nbsp;0x3)&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;4)&amp;nbsp;|&amp;nbsp;((int)&amp;nbsp;(string[i&amp;nbsp;+&amp;nbsp;1]&amp;nbsp;&amp;amp;&amp;nbsp;0xF0)&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;4)];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*p++&amp;nbsp;=&amp;nbsp;basis_64[((string[i&amp;nbsp;+&amp;nbsp;1]&amp;nbsp;&amp;amp;&amp;nbsp;0xF)&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;2)];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*p++&amp;nbsp;=&amp;nbsp;'=';&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*p++&amp;nbsp;=&amp;nbsp;'\0';&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;p&amp;nbsp;-&amp;nbsp;encoded;&lt;br /&gt;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;------------------------&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/b9doML/btscwFcoOyr/7JmVdelGl3YAK2ni4pXSi1/apple_base64.tar?attach=1&amp;amp;knm=tfile.tar&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;apple_base64.tar&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2867</guid>
      <comments>https://uple.tistory.com/2867#entry2867comment</comments>
      <pubDate>Mon, 24 Apr 2023 23:15:25 +0900</pubDate>
    </item>
    <item>
      <title>MBC KBS SBS JTBC tvN EBS OCN</title>
      <link>https://uple.tistory.com/2866</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Munhwa Broadcasting Coperation&lt;br /&gt;&lt;br /&gt;Korean Broadcasting System&lt;br /&gt;&lt;br /&gt;Seoul Broadcasting System&lt;br /&gt;&lt;br /&gt;Joongang Tongyang Broadcasting Company&lt;br /&gt;&lt;br /&gt;Total Variety Network&lt;br /&gt;&lt;br /&gt;Educational Broadcasting System&lt;br /&gt;&lt;br /&gt;Orion Cinema Network&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>knowledge</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2866</guid>
      <comments>https://uple.tistory.com/2866#entry2866comment</comments>
      <pubDate>Sun, 9 Apr 2023 10:59:05 +0900</pubDate>
    </item>
    <item>
      <title>RE100 CF100</title>
      <link>https://uple.tistory.com/2865</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;RE100(재생에너지, Renewable Electricity 100%)&lt;br /&gt;&lt;br /&gt;CF100(무탄소, Carbon Free 100%)&lt;/p&gt;</description>
      <category>knowledge</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2865</guid>
      <comments>https://uple.tistory.com/2865#entry2865comment</comments>
      <pubDate>Thu, 23 Mar 2023 07:10:23 +0900</pubDate>
    </item>
    <item>
      <title>챗GPT - ChatGPT</title>
      <link>https://uple.tistory.com/2863</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;챗GPT - ChatGPT(Chat Generative Pretrained Transformer)&lt;br /&gt;&lt;br /&gt;OpenAI에서 개발한 AI 언어 모델.&lt;br /&gt;사용자가 입력한 문장을 기반으로 답변을 생성하는 서비스.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>IT_COMPUTER</category>
      <category>챗GPT</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2863</guid>
      <comments>https://uple.tistory.com/2863#entry2863comment</comments>
      <pubDate>Mon, 13 Feb 2023 08:17:50 +0900</pubDate>
    </item>
    <item>
      <title>curl</title>
      <link>https://uple.tistory.com/2862</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;curl 다운로드 :&amp;nbsp; &lt;a href=&quot;https://curl.se/download.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://curl.se/download.html&lt;/a&gt;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2862</guid>
      <comments>https://uple.tistory.com/2862#entry2862comment</comments>
      <pubDate>Wed, 11 Jan 2023 21:07:04 +0900</pubDate>
    </item>
    <item>
      <title>cc / bcc</title>
      <link>https://uple.tistory.com/2861</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;cc : carbon copy 주 수신자와 구별하기 위한 사본을 받는 사람&lt;br&gt;bcc : blind carbon copy 보이지않는 사본&lt;/p&gt;</description>
      <category>knowledge</category>
      <category>CC</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2861</guid>
      <comments>https://uple.tistory.com/2861#entry2861comment</comments>
      <pubDate>Thu, 22 Dec 2022 08:29:28 +0900</pubDate>
    </item>
    <item>
      <title>재핑(zapping)</title>
      <link>https://uple.tistory.com/2860</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;재핑(zapping): TV 광고가 나오면 이리저리 채널을 옮기는 시청 패턴&lt;/p&gt;</description>
      <category>knowledge</category>
      <category>재핑</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2860</guid>
      <comments>https://uple.tistory.com/2860#entry2860comment</comments>
      <pubDate>Thu, 22 Dec 2022 07:36:45 +0900</pubDate>
    </item>
    <item>
      <title>자동차 자율 주행 단계 구분</title>
      <link>https://uple.tistory.com/2859</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1116&quot; data-origin-height=&quot;1626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK7IzD/btrMkMIwijv/lxjkV0sQOoEh5FFaSxn7zK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK7IzD/btrMkMIwijv/lxjkV0sQOoEh5FFaSxn7zK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK7IzD/btrMkMIwijv/lxjkV0sQOoEh5FFaSxn7zK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK7IzD%2FbtrMkMIwijv%2FlxjkV0sQOoEh5FFaSxn7zK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1116&quot; height=&quot;1626&quot; data-origin-width=&quot;1116&quot; data-origin-height=&quot;1626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>knowledge</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2859</guid>
      <comments>https://uple.tistory.com/2859#entry2859comment</comments>
      <pubDate>Sun, 18 Sep 2022 09:43:48 +0900</pubDate>
    </item>
    <item>
      <title>ssh 로그인 끄고 sftp 허용</title>
      <link>https://uple.tistory.com/2858</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;$ sudo vim /etc/sshd_config &lt;br /&gt;#Subsystem sftp /usr/lib/openssh/sftp-server &lt;br /&gt;Subsystem sftp internal-sftp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>os/UNIX_LINUX</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2858</guid>
      <comments>https://uple.tistory.com/2858#entry2858comment</comments>
      <pubDate>Fri, 19 Aug 2022 08:11:15 +0900</pubDate>
    </item>
    <item>
      <title>CENTOS 리눅스 SFTP,SSH Port 분리</title>
      <link>https://uple.tistory.com/2857</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;SSH와 SFTP의 default port : 22번&lt;br /&gt;&lt;br /&gt;/etc/ssh/sshd_config&lt;br /&gt;사용하고자하는 2개의 port 기입&lt;br /&gt;Port 22&lt;br /&gt;Port 2222&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;262&quot; data-origin-height=&quot;126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JVFlh/btrJ3uJtVbv/nuXsXnsgwHL2VXWgdys9zK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JVFlh/btrJ3uJtVbv/nuXsXnsgwHL2VXWgdys9zK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JVFlh/btrJ3uJtVbv/nuXsXnsgwHL2VXWgdys9zK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJVFlh%2FbtrJ3uJtVbv%2FnuXsXnsgwHL2VXWgdys9zK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;262&quot; height=&quot;126&quot; data-origin-width=&quot;262&quot; data-origin-height=&quot;126&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Subsystem sftp 공간에 매칭 로컬포트 기입&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD15pU/btrJ3aqX7mM/nF64mAx1w0XNqIlks2yNvK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD15pU/btrJ3aqX7mM/nF64mAx1w0XNqIlks2yNvK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD15pU/btrJ3aqX7mM/nF64mAx1w0XNqIlks2yNvK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD15pU%2FbtrJ3aqX7mM%2FnF64mAx1w0XNqIlks2yNvK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;281&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;281&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;22번포트-&amp;gt; SFTP 포트&lt;br /&gt;&lt;br /&gt;2222번포트-&amp;gt;SSH 포트&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://m.blog.naver.com/yeopil-yoon/221399929611&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://m.blog.naver.com/yeopil-yoon/221399929611&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;리눅스 SFTP,SSH Port 분리&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;이전까지 본인은 SSH포트를 바꾸면 SFTP는 자동적으로 따라오는줄 알고 있었다. 하지만 역시 갓구글...&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/yeopil-yoon/221399929611&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/9dCEy/hyPuLTc9NY/l1CvAIaYSkIFksIHhprHuK/img.png?width=262&amp;amp;height=126&amp;amp;face=0_0_262_126&quot; data-og-url=&quot;https://blog.naver.com/yeopil-yoon/221399929611&quot;&gt;&lt;a href=&quot;https://blog.naver.com/yeopil-yoon/221399929611&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/yeopil-yoon/221399929611&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/9dCEy/hyPuLTc9NY/l1CvAIaYSkIFksIHhprHuK/img.png?width=262&amp;amp;height=126&amp;amp;face=0_0_262_126');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;리눅스 SFTP,SSH Port 분리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이전까지 본인은 SSH포트를 바꾸면 SFTP는 자동적으로 따라오는줄 알고 있었다. 하지만 역시 갓구글...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;</description>
      <category>os/UNIX_LINUX</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2857</guid>
      <comments>https://uple.tistory.com/2857#entry2857comment</comments>
      <pubDate>Fri, 19 Aug 2022 08:08:05 +0900</pubDate>
    </item>
    <item>
      <title>CentOS7 SSH 공개키 자동 로그인 처리.</title>
      <link>https://uple.tistory.com/2856</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;CentOS7&amp;nbsp;SSH&amp;nbsp;공개키&amp;nbsp;자동&amp;nbsp;로그인&amp;nbsp;처리. &lt;br /&gt;&lt;br /&gt;/etc/securetty/etc/ssh/sshd_config &lt;br /&gt;&lt;br /&gt;PasswordAuthentication&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;RSAAuthentication&amp;nbsp;yes &lt;br /&gt;PubkeyAuthentication&amp;nbsp;yes &lt;br /&gt;AuthorizedKeysFile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.ssh/authorized_keys &lt;br /&gt;&lt;br /&gt;sshd&amp;nbsp;재시작&amp;nbsp; &lt;br /&gt;#&amp;nbsp;systemctl&amp;nbsp;restart&amp;nbsp;sshd &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;ssh-keygen&amp;nbsp;-t&amp;nbsp;rsa&amp;nbsp; &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;.ssh/id_rsa &lt;br /&gt;#&amp;nbsp;.ssh/id_rsa_pub &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;id_rsa_pub를&amp;nbsp;.ssh/authorized_keys&amp;nbsp;로&amp;nbsp;복사하여&amp;nbsp;전달. &lt;br /&gt;&lt;br /&gt;유효한&amp;nbsp;파일&amp;nbsp;권한으로&amp;nbsp;부여 &lt;br /&gt;#&amp;nbsp;chmod&amp;nbsp;0700&amp;nbsp;~/.ssh &lt;br /&gt;#&amp;nbsp;chmod&amp;nbsp;0600&amp;nbsp;~/.ssh/authorized_keys &lt;/p&gt;</description>
      <category>os/UNIX_LINUX</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2856</guid>
      <comments>https://uple.tistory.com/2856#entry2856comment</comments>
      <pubDate>Wed, 13 Jul 2022 23:58:43 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 진단 / 사용자 인증 - root 계정 원격 접속 제한 상식</title>
      <link>https://uple.tistory.com/2854</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스&amp;nbsp;진단&amp;nbsp;/&amp;nbsp;사용자&amp;nbsp;인증&amp;nbsp;-&amp;nbsp;root&amp;nbsp;계정&amp;nbsp;원격&amp;nbsp;접속&amp;nbsp;제한&amp;nbsp;상식 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;■&amp;nbsp;기능&amp;nbsp;:&amp;nbsp;/etc/securetty/etc/ssh/sshd_config&amp;nbsp;리눅스&amp;nbsp;SSH&amp;nbsp;설정&amp;nbsp;파일&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;■&amp;nbsp;예시&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Port&amp;nbsp;xx &lt;br /&gt;&lt;br /&gt;SSH&amp;nbsp;서비스&amp;nbsp;포트는&amp;nbsp;22로&amp;nbsp;규약되어&amp;nbsp;있지만&amp;nbsp;보안을&amp;nbsp;위해&amp;nbsp;임의의&amp;nbsp;포트로&amp;nbsp;변경&amp;nbsp;하는것도&amp;nbsp;가능하다.&amp;nbsp; &lt;br /&gt;원하는&amp;nbsp;포트번호로&amp;nbsp;변경하고&amp;nbsp;/etc/services&amp;nbsp;파일에서&amp;nbsp;ssh&amp;nbsp;포트값도&amp;nbsp;변경해&amp;nbsp;주면&amp;nbsp;된다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Protocol&amp;nbsp;2 &lt;br /&gt;&lt;br /&gt;SSH&amp;nbsp;프로토콜은&amp;nbsp;ver&amp;nbsp;1과&amp;nbsp;ver&amp;nbsp;2가&amp;nbsp;있는데&amp;nbsp; &lt;br /&gt;SSH1&amp;nbsp;클라이언트와&amp;nbsp;SSH2&amp;nbsp;클라이언트의&amp;nbsp;접속&amp;nbsp;요청에&amp;nbsp;대한&amp;nbsp;것이다.&amp;nbsp; &lt;br /&gt;보안상&amp;nbsp;Protocol&amp;nbsp;1은&amp;nbsp;사용하지&amp;nbsp;않고&amp;nbsp;Protocol&amp;nbsp;2&amp;nbsp;만을&amp;nbsp;사용한다 &lt;br /&gt;(둘다&amp;nbsp;사용하기&amp;nbsp;위해서는&amp;nbsp;Protocol&amp;nbsp;2,1&amp;nbsp;을&amp;nbsp;적어주면&amp;nbsp;된다). &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ListenAddress&amp;nbsp;0.0.0.0 &lt;br /&gt;&lt;br /&gt;SSH&amp;nbsp;서버에서&amp;nbsp;Listen&amp;nbsp;할&amp;nbsp;로컬&amp;nbsp;호스트&amp;nbsp;주소를&amp;nbsp;설정하는&amp;nbsp;것이다.&amp;nbsp; &lt;br /&gt;여러개의&amp;nbsp;IP를&amp;nbsp;사용중일&amp;nbsp;때&amp;nbsp;특정&amp;nbsp;IP로&amp;nbsp;SSH&amp;nbsp;접속이&amp;nbsp;가능토록&amp;nbsp;설정하는&amp;nbsp;옵션으로&amp;nbsp; &lt;br /&gt;0.0.0.0은&amp;nbsp;모든&amp;nbsp;네트워크를&amp;nbsp;의미한다.&amp;nbsp; &lt;br /&gt;사용하고자&amp;nbsp;하는&amp;nbsp;특정&amp;nbsp;IP가&amp;nbsp;있다면&amp;nbsp;0.0.0.0&amp;nbsp;대신&amp;nbsp;적으면&amp;nbsp;된다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#Hostkey&amp;nbsp;~ &lt;br /&gt;&lt;br /&gt;Protocol&amp;nbsp;1,&amp;nbsp;2(rsa,&amp;nbsp;dsa)&amp;nbsp;의&amp;nbsp;호스트키&amp;nbsp;위치를&amp;nbsp;지정한다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;KeyRegenerationInterval&amp;nbsp;1h &lt;br /&gt;&lt;br /&gt;자동으로&amp;nbsp;생성된&amp;nbsp;키의&amp;nbsp;유효시간을&amp;nbsp;지정한다(기본&amp;nbsp;3600sec&amp;nbsp;이고&amp;nbsp;h를&amp;nbsp;붙이면&amp;nbsp;1&amp;nbsp;hour의&amp;nbsp;의미이다).&amp;nbsp; &lt;br /&gt;이&amp;nbsp;옵션은&amp;nbsp;호스트의&amp;nbsp;세션에&amp;nbsp;있는&amp;nbsp;키를&amp;nbsp;캡쳐해서&amp;nbsp;암호를&amp;nbsp;해독하거나&amp;nbsp;훔친&amp;nbsp;키를&amp;nbsp;재사용&amp;nbsp;하지&amp;nbsp;못하도록&amp;nbsp;하기&amp;nbsp;위함이다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ServerKeyBits&amp;nbsp;768 &lt;br /&gt;&lt;br /&gt;서버&amp;nbsp;키의&amp;nbsp;비트&amp;nbsp;길이를&amp;nbsp;설정한다.&amp;nbsp;최소&amp;nbsp;512,&amp;nbsp;기본&amp;nbsp;768. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SyslogFacility&amp;nbsp;AUTH &lt;br /&gt;&lt;br /&gt;syslog&amp;nbsp;데몬에&amp;nbsp;의한&amp;nbsp;로그&amp;nbsp;facility를&amp;nbsp;지정한다.&amp;nbsp; &lt;br /&gt;sub&amp;nbsp;system&amp;nbsp;종류&amp;nbsp;및&amp;nbsp;내용은&amp;nbsp;syslog&amp;nbsp;관련&amp;nbsp;자료를&amp;nbsp;참조. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;LogLevel&amp;nbsp;INFO &lt;br /&gt;&lt;br /&gt;로그&amp;nbsp;레벨(메시지&amp;nbsp;종류)를&amp;nbsp;지정한다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;LoginGraceTime&amp;nbsp;2m &lt;br /&gt;&lt;br /&gt;지정한&amp;nbsp;시간내에&amp;nbsp;로그인&amp;nbsp;하지&amp;nbsp;않으면&amp;nbsp;자동으로&amp;nbsp;접속을&amp;nbsp;끊는다.&amp;nbsp; &lt;br /&gt;0값은&amp;nbsp;무제한. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PermitRootLogin&amp;nbsp;no &lt;br /&gt;&lt;br /&gt;공격자가&amp;nbsp;임의의&amp;nbsp;주소에&amp;nbsp;root&amp;nbsp;계정으로&amp;nbsp;접속이&amp;nbsp;가능한지&amp;nbsp;여부를&amp;nbsp;무한&amp;nbsp;스캐닝을&amp;nbsp;통해&amp;nbsp;알아&amp;nbsp;낼&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp; &lt;br /&gt;따라서&amp;nbsp;위와&amp;nbsp;같이&amp;nbsp;root&amp;nbsp;계정의&amp;nbsp;접근을&amp;nbsp;막고&amp;nbsp;일반&amp;nbsp;유저로&amp;nbsp;접속한&amp;nbsp;다음&amp;nbsp;root&amp;nbsp;계정을&amp;nbsp;불러오는&amp;nbsp;것이&amp;nbsp;좋다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-공개키인증 &lt;br /&gt;PubkeyAuthentication&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;-root&amp;nbsp;패스워드&amp;nbsp;로그인&amp;nbsp;금지하고&amp;nbsp;공개키&amp;nbsp;인증으로만&amp;nbsp;로그인 &lt;br /&gt;PermitRootLogin&amp;nbsp;without-password &lt;br /&gt;&lt;br /&gt;-root로는&amp;nbsp;아예&amp;nbsp;SSH로그인을&amp;nbsp;할&amp;nbsp;수&amp;nbsp;없다.&amp;nbsp;(추천사항) &lt;br /&gt;PermitRootLogin&amp;nbsp;no &lt;br /&gt;&lt;br /&gt;-패스워드로는&amp;nbsp;아예&amp;nbsp;로그인&amp;nbsp;못하게&amp;nbsp;설정 &lt;br /&gt;PasswordAuthentication&amp;nbsp;no &lt;br /&gt;&lt;br /&gt;-지정한&amp;nbsp;사용자만&amp;nbsp;SSH로&amp;nbsp;로그인&amp;nbsp;가능하게&amp;nbsp;설정 &lt;br /&gt;AllowUsers&amp;nbsp;mysshuser &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;StrictModes&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;로그인을&amp;nbsp;허용하기&amp;nbsp;앞서&amp;nbsp;파일&amp;nbsp;모드&amp;nbsp;및&amp;nbsp;사용자&amp;nbsp;홈&amp;nbsp;디렉토리&amp;nbsp;소유권과&amp;nbsp;원격&amp;nbsp;호스트의&amp;nbsp;파일들을&amp;nbsp; &lt;br /&gt;ssh&amp;nbsp;데몬이&amp;nbsp;체크&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;할&amp;nbsp;때&amp;nbsp;사용. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;MaxAuthTries&amp;nbsp;6 &lt;br /&gt;&lt;br /&gt;접속당&amp;nbsp;최대&amp;nbsp;인증&amp;nbsp;시도&amp;nbsp;횟수.&amp;nbsp;기본값&amp;nbsp;6,&amp;nbsp;3회이상&amp;nbsp;인증&amp;nbsp;실패시&amp;nbsp;로그가&amp;nbsp;기록된다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#RSAAuthentication&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;RSA&amp;nbsp;인증을&amp;nbsp;설정.&amp;nbsp;Protocol&amp;nbsp;1&amp;nbsp;에서만&amp;nbsp;적용되는&amp;nbsp;옵션이므로&amp;nbsp;주석처리. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#PubkeyAuthentication&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;공개키&amp;nbsp;인증&amp;nbsp;설정.&amp;nbsp;Protocol&amp;nbsp;2에&amp;nbsp;적용된다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#AuthorizedKeysFile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.ssh/authorized_keys &lt;br /&gt;&lt;br /&gt;인증키를&amp;nbsp;저장할&amp;nbsp;위치를&amp;nbsp;지정한다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RhostsRSAAuthentication&amp;nbsp;no &lt;br /&gt;&lt;br /&gt;/etc/ssh/ssh_known_hosts&amp;nbsp;파일에&amp;nbsp;있는&amp;nbsp;호스트에&amp;nbsp;대한&amp;nbsp;인증을&amp;nbsp;허용할&amp;nbsp;것인지&amp;nbsp;설정한다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HostbasedAuthentication&amp;nbsp;no &lt;br /&gt;&lt;br /&gt;호스트&amp;nbsp;기반의&amp;nbsp;인증&amp;nbsp;허용&amp;nbsp;여부를&amp;nbsp;결정한다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IgnoreUserKnownHosts&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;RhostsRSAAuthentication,&amp;nbsp;HostbasedAuthentication&amp;nbsp;인증시&amp;nbsp;~/.ssh/knownhosts&amp;nbsp;파일의&amp;nbsp;호스트들을&amp;nbsp;제외할&amp;nbsp;것인지&amp;nbsp;설정한다.&amp;nbsp; &lt;br /&gt;rhosts&amp;nbsp;파일을&amp;nbsp;허용하지&amp;nbsp;않았으므로&amp;nbsp;yes로&amp;nbsp;설정. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IgnoreRhosts&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;~/.rhosts와&amp;nbsp;~/.shosts&amp;nbsp;파일&amp;nbsp;사용여부를&amp;nbsp;결정한다.&amp;nbsp; &lt;br /&gt;보안상&amp;nbsp;이유로&amp;nbsp;사용하지&amp;nbsp;않는다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PasswordAuthentication&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;패스워드&amp;nbsp;인증을&amp;nbsp;허용한다.&amp;nbsp;Protocol&amp;nbsp;1,&amp;nbsp;2&amp;nbsp;모두&amp;nbsp;적용된다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PermitEmptyPasswords&amp;nbsp;no &lt;br /&gt;&lt;br /&gt;패스워드&amp;nbsp;인증시&amp;nbsp;비어있는&amp;nbsp;스트링을&amp;nbsp;인정할지&amp;nbsp;여부를&amp;nbsp;결정한다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ChallengeResponseAuthentication&amp;nbsp;no &lt;br /&gt;&lt;br /&gt;Challenge-Response&amp;nbsp;인증을&amp;nbsp;허용할지&amp;nbsp;여부를&amp;nbsp;설정한다.&amp;nbsp; &lt;br /&gt;UsePAM&amp;nbsp;옵션을&amp;nbsp;yes로&amp;nbsp;설정할&amp;nbsp;경우&amp;nbsp;이&amp;nbsp;옵션은&amp;nbsp;no로&amp;nbsp;설정해야&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#UsePAM&amp;nbsp;no &lt;br /&gt;&lt;br /&gt;ChallengeResponseAuthentication을&amp;nbsp;이용한&amp;nbsp;PAM&amp;nbsp;인증을&amp;nbsp;허용하는&amp;nbsp;옵션이다.&amp;nbsp; &lt;br /&gt;이&amp;nbsp;옵션을&amp;nbsp;yes로&amp;nbsp;설정하는&amp;nbsp;경우&amp;nbsp;열쇠글&amp;nbsp;인증과&amp;nbsp;동일하게&amp;nbsp;적용되므로,&amp;nbsp; &lt;br /&gt;열쇠글&amp;nbsp;인증&amp;nbsp;또는&amp;nbsp;ChallengeResponseAuthentication&amp;nbsp;옵션을&amp;nbsp;꺼&amp;nbsp;놓아야&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;-&amp;nbsp;Kerberos&amp;nbsp;및&amp;nbsp;GSSAPI&amp;nbsp;인증에&amp;nbsp;관한&amp;nbsp;내용은&amp;nbsp;필요에&amp;nbsp;따라&amp;nbsp;설정. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AllowTcpForwarding&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;TCP&amp;nbsp;포워딩을&amp;nbsp;가능토록&amp;nbsp;설정하는&amp;nbsp;옵션이다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;GatewayPorts&amp;nbsp;no &lt;br /&gt;&lt;br /&gt;클라이언트에&amp;nbsp;포워드된&amp;nbsp;포트로&amp;nbsp;원격&amp;nbsp;호스트&amp;nbsp;들이&amp;nbsp;접속할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;설정하는&amp;nbsp;옵션이다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;X11Forwarding&amp;nbsp;no &lt;br /&gt;&lt;br /&gt;원격에서&amp;nbsp;X11&amp;nbsp;포워딩을&amp;nbsp;허용할지&amp;nbsp;여부를&amp;nbsp;설정하는&amp;nbsp;옵션이다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#X11DisplayOffset&amp;nbsp;10 &lt;br /&gt;&lt;br /&gt;X11&amp;nbsp;포워딩이&amp;nbsp;될&amp;nbsp;때&amp;nbsp;디스플레이&amp;nbsp;offset을&amp;nbsp;설정.&amp;nbsp;허용하지&amp;nbsp;않았으므로&amp;nbsp;주석&amp;nbsp;처리. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PrintMotd&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;ssh&amp;nbsp;로그인시&amp;nbsp;/etc/motd&amp;nbsp;파일의&amp;nbsp;내용을&amp;nbsp;보여줄&amp;nbsp;것인지&amp;nbsp;여부결정.&amp;nbsp;ssh&amp;nbsp;로그인을&amp;nbsp;환영하는&amp;nbsp;메시지나&amp;nbsp;공지사항&amp;nbsp;등을&amp;nbsp;출력되도록&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있음. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PrintLastLog&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;로그인시&amp;nbsp;지난번&amp;nbsp;로그인&amp;nbsp;기록을&amp;nbsp;보여줄&amp;nbsp;것인가를&amp;nbsp;설정. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TCPKeepAlive&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;클라이언트의&amp;nbsp;접속이&amp;nbsp;끊어졌는지를&amp;nbsp;체크하기&amp;nbsp;위해&amp;nbsp;서버가&amp;nbsp;일정시간&amp;nbsp;메시지를&amp;nbsp;전달한다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PermitUserEnvironment&amp;nbsp;no &lt;br /&gt;&lt;br /&gt;~/.ssh/enviroment와&amp;nbsp;~/.ssh/authorized_keys&amp;nbsp;파일의&amp;nbsp;environment&amp;nbsp;=&amp;nbsp;옵션을&amp;nbsp;sshd&amp;nbsp;데몬에서&amp;nbsp;처리&amp;nbsp;되도록&amp;nbsp;할것&amp;nbsp;인가를&amp;nbsp;설정한다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Compression&amp;nbsp;delayed &lt;br /&gt;&lt;br /&gt;압축&amp;nbsp;사용여부를&amp;nbsp;결정. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ClientAliveInterval&amp;nbsp;0 &lt;br /&gt;&lt;br /&gt;클라이언트로부터&amp;nbsp;sshd&amp;nbsp;데몬이&amp;nbsp;아무런&amp;nbsp;데이터를&amp;nbsp;받지&amp;nbsp;못하게&amp;nbsp;되면&amp;nbsp;암호화된&amp;nbsp;채널을&amp;nbsp;통해서&amp;nbsp;메시지를&amp;nbsp;클라이언트의&amp;nbsp;요청에&amp;nbsp;응답하여&amp;nbsp;보내는데&amp;nbsp;이&amp;nbsp;때의&amp;nbsp;시간&amp;nbsp;간격을&amp;nbsp;초단위로&amp;nbsp;설정한다.&amp;nbsp;0은&amp;nbsp;클라이언트에&amp;nbsp;메시지를&amp;nbsp;보내지&amp;nbsp;않는&amp;nbsp;것을&amp;nbsp;의미.&amp;nbsp;Protocol&amp;nbsp;2에서&amp;nbsp;적용된다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ClientAliveCountMax&amp;nbsp;3 &lt;br /&gt;&lt;br /&gt;서버에게&amp;nbsp;전달되는&amp;nbsp;클라이언트의&amp;nbsp;생존&amp;nbsp;메시지&amp;nbsp;회수를&amp;nbsp;지정한다.&amp;nbsp;이&amp;nbsp;옵션으로&amp;nbsp;지정한&amp;nbsp;값에&amp;nbsp;도달하게&amp;nbsp;되면&amp;nbsp;sshd&amp;nbsp;데몬은&amp;nbsp;클라이언트와의&amp;nbsp;연결을&amp;nbsp;끊어&amp;nbsp;버리고&amp;nbsp;세션을&amp;nbsp;종료시킨다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;UseDNS&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;클라이언트&amp;nbsp;호스트&amp;nbsp;주소를&amp;nbsp;DNS&amp;nbsp;해석. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PidFile&amp;nbsp;/var/run/sshd.pid &lt;br /&gt;&lt;br /&gt;sshd&amp;nbsp;데몬의&amp;nbsp;PID를&amp;nbsp;저장할&amp;nbsp;파일을&amp;nbsp;지정한다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;MaxStartups&amp;nbsp;5 &lt;br /&gt;&lt;br /&gt;로그인하고&amp;nbsp;있지&amp;nbsp;않는&amp;nbsp;최대&amp;nbsp;접속&amp;nbsp;수를&amp;nbsp;설정한다.&amp;nbsp; &lt;br /&gt;이&amp;nbsp;값을&amp;nbsp;초과하게&amp;nbsp;되고&amp;nbsp;인증이&amp;nbsp;성공적으로&amp;nbsp;이뤄지지&amp;nbsp;않으면&amp;nbsp;그&amp;nbsp;다음&amp;nbsp;접속이&amp;nbsp;불가능&amp;nbsp;하다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Subsystem&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sftp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/libexec/openssh/sftp-server &lt;br /&gt;&lt;br /&gt;sftp는&amp;nbsp;프로토콜&amp;nbsp;버전&amp;nbsp;2에서&amp;nbsp;사용되는&amp;nbsp;것으로서&amp;nbsp;ssh와&amp;nbsp;같이&amp;nbsp;ftp의&amp;nbsp;보안을&amp;nbsp;강화하기&amp;nbsp;위해&amp;nbsp;사용되는&amp;nbsp;보안&amp;nbsp;ftp&amp;nbsp;프로그램이다.&amp;nbsp;openssh를&amp;nbsp;설치하면&amp;nbsp;/usr/local/ssh/libexec/sftp-server파일이&amp;nbsp;설치된다.&amp;nbsp;이것은&amp;nbsp;sftp&amp;nbsp;서버용&amp;nbsp;프로그램으로&amp;nbsp;클라이언트&amp;nbsp;sftp프로그램은&amp;nbsp;설치되지&amp;nbsp;않는다. &lt;br /&gt;&lt;br /&gt;따라서&amp;nbsp;서버로&amp;nbsp;가동시키고&amp;nbsp;원도용&amp;nbsp;ssh클라이언트&amp;nbsp;프로그램이나&amp;nbsp;SSH2를&amp;nbsp;설치하면&amp;nbsp;sftp를&amp;nbsp;사용이&amp;nbsp;가능하다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;UsePrivilegeSeparation&amp;nbsp;yes &lt;br /&gt;&lt;br /&gt;접속된&amp;nbsp;프로세스에&amp;nbsp;대해&amp;nbsp;상위&amp;nbsp;권한&amp;nbsp;없이&amp;nbsp;chroot로&amp;nbsp;고립된&amp;nbsp;형태로&amp;nbsp;작동 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://boanchung.tistory.com/30&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://boanchung.tistory.com/30&lt;/a&gt; &lt;/p&gt;</description>
      <category>os/UNIX_LINUX</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2854</guid>
      <comments>https://uple.tistory.com/2854#entry2854comment</comments>
      <pubDate>Wed, 13 Jul 2022 23:46:15 +0900</pubDate>
    </item>
    <item>
      <title>Oracle Linux</title>
      <link>https://uple.tistory.com/2853</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yum.oracle.com/oracle-linux-isos.html#InstallationGuides&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://yum.oracle.com/oracle-linux-isos.html#InstallationGuides&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Oracle&amp;nbsp;Linux&amp;nbsp;x86_64&amp;nbsp;ISOs &lt;br /&gt;&lt;br /&gt;Oracle&amp;nbsp;Linux&amp;nbsp;ISO&amp;nbsp;images&amp;nbsp;available&amp;nbsp;to&amp;nbsp;download&amp;nbsp;for&amp;nbsp;x86_64 &lt;br /&gt;&lt;br /&gt;Release Full&amp;nbsp;ISO &lt;br /&gt;&lt;br /&gt;9.0 OracleLinux-R9-U0-x86_64-dvd.iso &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://yum.oracle.com/ISOS/OracleLinux/OL9/u0/x86_64/OracleLinux-R9-U0-x86_64-dvd.iso&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://yum.oracle.com/ISOS/OracleLinux/OL9/u0/x86_64/OracleLinux-R9-U0-x86_64-dvd.iso&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>os/UNIX_LINUX</category>
      <category>Oracle Linux</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2853</guid>
      <comments>https://uple.tistory.com/2853#entry2853comment</comments>
      <pubDate>Tue, 5 Jul 2022 21:14:58 +0900</pubDate>
    </item>
    <item>
      <title>Rocky Linux</title>
      <link>https://uple.tistory.com/2852</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #6b7280;&quot;&gt;Rocky Linux&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://rockylinux.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://rockylinux.org/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1655606623424&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Rocky Linux&quot; data-og-description=&quot;Rocky Linux is an open enterprise Operating System designed to be 100% bug-for-bug compatible with Enterprise Linux.&quot; data-og-host=&quot;rockylinux.org&quot; data-og-source-url=&quot;https://rockylinux.org/&quot; data-og-url=&quot;https://rockylinux.org/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ZnjAB/hyOOtYIKr7/k3mp8rnSlIC82WIK7kK1K1/img.png?width=3840&amp;amp;height=2160&amp;amp;face=0_0_3840_2160&quot;&gt;&lt;a href=&quot;https://rockylinux.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://rockylinux.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ZnjAB/hyOOtYIKr7/k3mp8rnSlIC82WIK7kK1K1/img.png?width=3840&amp;amp;height=2160&amp;amp;face=0_0_3840_2160');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Rocky Linux&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Rocky Linux is an open enterprise Operating System designed to be 100% bug-for-bug compatible with Enterprise Linux.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;rockylinux.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>os/UNIX_LINUX</category>
      <category>https://rockylinux.org/</category>
      <category>Rocky Linux</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2852</guid>
      <comments>https://uple.tistory.com/2852#entry2852comment</comments>
      <pubDate>Sun, 19 Jun 2022 11:44:08 +0900</pubDate>
    </item>
    <item>
      <title>BNPL</title>
      <link>https://uple.tistory.com/2851</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;후불결제(BNPL, Buy Now Pay Later)&lt;/p&gt;</description>
      <category>knowledge</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2851</guid>
      <comments>https://uple.tistory.com/2851#entry2851comment</comments>
      <pubDate>Mon, 18 Apr 2022 08:16:43 +0900</pubDate>
    </item>
    <item>
      <title>keep in touch</title>
      <link>https://uple.tistory.com/2848</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;keep in touch&lt;/p&gt;</description>
      <category>english</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2848</guid>
      <comments>https://uple.tistory.com/2848#entry2848comment</comments>
      <pubDate>Sun, 3 Apr 2022 23:26:26 +0900</pubDate>
    </item>
    <item>
      <title>사용 가능한 Port 범위</title>
      <link>https://uple.tistory.com/2846</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;사용&amp;nbsp;가능한&amp;nbsp;Port&amp;nbsp;범위 &lt;br /&gt;&lt;br /&gt;port번호는&amp;nbsp;0&amp;nbsp;~&amp;nbsp;65535번까지&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;일반적으로&amp;nbsp;unsigned&amp;nbsp;short의&amp;nbsp;2바이트&amp;nbsp;정수형을&amp;nbsp;사용합니다. &lt;br /&gt;port번호는&amp;nbsp;서비스번호라고도&amp;nbsp;합니다.&amp;nbsp; &lt;br /&gt;그래서&amp;nbsp;/etc/services라는&amp;nbsp;파일에&amp;nbsp;등록하여&amp;nbsp;서비스명으로&amp;nbsp;port번호를&amp;nbsp;찾아서&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;getservbyname(3)&amp;nbsp;함수등으로&amp;nbsp;서비스명으로&amp;nbsp;port번호를&amp;nbsp;읽을&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;/etc/services&amp;nbsp;파일에&amp;nbsp;port번호를&amp;nbsp;등록하면&amp;nbsp; &lt;br /&gt;그&amp;nbsp;시스템에&amp;nbsp;사용하는&amp;nbsp;prot번호를&amp;nbsp;중복되어&amp;nbsp;오류가&amp;nbsp;나는&amp;nbsp;것을&amp;nbsp;방지하여&amp;nbsp;채번할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;port&amp;nbsp;번호&amp;nbsp;사용&amp;nbsp;영역 &lt;br /&gt;&lt;br /&gt;port번호는&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;영역이&amp;nbsp;정해져&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;0&amp;nbsp;~&amp;nbsp;1023&amp;nbsp;:&amp;nbsp;well-known&amp;nbsp;port번호&amp;nbsp;영역입니다. &lt;br /&gt;이&amp;nbsp;영역의&amp;nbsp;port번호는&amp;nbsp;UNIX/LINUX에서&amp;nbsp;root&amp;nbsp;권한으로만&amp;nbsp;port를&amp;nbsp;열&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;예약영역이라고&amp;nbsp;보면&amp;nbsp;됩니다. &lt;br /&gt;&lt;br /&gt;1024&amp;nbsp;~&amp;nbsp;49151번:&amp;nbsp;등록된&amp;nbsp;포트&amp;nbsp;(registered&amp;nbsp;port) &lt;br /&gt;이&amp;nbsp;영역은&amp;nbsp;주로&amp;nbsp;서버&amp;nbsp;소켓으로&amp;nbsp;사용하는&amp;nbsp;영역입니다. &lt;br /&gt;&lt;br /&gt;49152&amp;nbsp;~&amp;nbsp;65535번&amp;nbsp;:&amp;nbsp;동적&amp;nbsp;포트(dynamic&amp;nbsp;port) &lt;br /&gt;이&amp;nbsp;영역은&amp;nbsp;client가&amp;nbsp;connect(2)시&amp;nbsp; &lt;br /&gt;또는&amp;nbsp;bind(2)없이&amp;nbsp;server&amp;nbsp;socket을&amp;nbsp;생성했어&amp;nbsp;listen(2)할&amp;nbsp;경우에&amp;nbsp;자동으로&amp;nbsp;할당되는&amp;nbsp;영역입니다. &lt;br /&gt;server&amp;nbsp;socket에서&amp;nbsp;자동할당하면,&amp;nbsp; &lt;br /&gt;client에게&amp;nbsp;할당된&amp;nbsp;port번호를&amp;nbsp;알릴방법이&amp;nbsp;있어야하기&amp;nbsp;때문에&amp;nbsp;서버&amp;nbsp;소켓은&amp;nbsp;prot번호를&amp;nbsp;정합니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;동적&amp;nbsp;포트영역은&amp;nbsp;서버&amp;nbsp;소켓&amp;nbsp;포트로&amp;nbsp;사용금지 &lt;br /&gt;&lt;br /&gt;서버&amp;nbsp;socket을&amp;nbsp;생성할&amp;nbsp;때에&amp;nbsp;동적&amp;nbsp;포트&amp;nbsp;영역의&amp;nbsp;번호를&amp;nbsp;bind(2)하여&amp;nbsp;사용할&amp;nbsp;수도&amp;nbsp;있습니다. &lt;br /&gt;그러나&amp;nbsp;이&amp;nbsp;경우에는&amp;nbsp;심각한&amp;nbsp;장애가&amp;nbsp;발생할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;예전에&amp;nbsp;실제로&amp;nbsp;발생한&amp;nbsp;오류인데,&amp;nbsp;서버소켓을&amp;nbsp;50000번대로&amp;nbsp;할당하여&amp;nbsp;사용하는&amp;nbsp;프로그램이&amp;nbsp;있었습니다. &lt;br /&gt;이&amp;nbsp;프로그램을&amp;nbsp;실행하기&amp;nbsp;전에&amp;nbsp;여러&amp;nbsp;프로그램들이&amp;nbsp;기동하면서,&amp;nbsp; &lt;br /&gt;수백개의&amp;nbsp;프로그램이&amp;nbsp;Oracle&amp;nbsp;DB서버와&amp;nbsp;접속을&amp;nbsp;하였습니다. &lt;br /&gt;이&amp;nbsp;때에,&amp;nbsp;oracle&amp;nbsp;db에&amp;nbsp;접속한&amp;nbsp;프로그램이&amp;nbsp;connect(2)하면서&amp;nbsp;동적영역의&amp;nbsp; &lt;br /&gt;port번호를&amp;nbsp;먼저&amp;nbsp;선점하여&amp;nbsp;실행하였습니다. &lt;br /&gt;&lt;br /&gt;뒤에&amp;nbsp;실행한&amp;nbsp;이&amp;nbsp;서버&amp;nbsp;프로그램이&amp;nbsp;port번호가&amp;nbsp;사용중이라는&amp;nbsp;오류와&amp;nbsp;함께&amp;nbsp;기동이&amp;nbsp;되지&amp;nbsp;않았습니다. &lt;br /&gt;이&amp;nbsp;경우에는&amp;nbsp;장애로&amp;nbsp;이어집니다. &lt;br /&gt;&lt;br /&gt;따라서,&amp;nbsp;동적&amp;nbsp;포트(dynamic&amp;nbsp;port)영역은&amp;nbsp;서버&amp;nbsp;소켓용&amp;nbsp;port로&amp;nbsp;절대&amp;nbsp;사용금지하기&amp;nbsp;바랍니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;출처:&amp;nbsp;&lt;a href=&quot;https://www.it-note.kr/189&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.it-note.kr/189&lt;/a&gt;&amp;nbsp;[IT&amp;nbsp;개발자&amp;nbsp;Note]&lt;/p&gt;</description>
      <category>programming</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2846</guid>
      <comments>https://uple.tistory.com/2846#entry2846comment</comments>
      <pubDate>Sun, 20 Mar 2022 23:11:56 +0900</pubDate>
    </item>
    <item>
      <title>It's in the middle of nowhere.</title>
      <link>https://uple.tistory.com/2845</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;It's in the middle of nowhere.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>english</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2845</guid>
      <comments>https://uple.tistory.com/2845#entry2845comment</comments>
      <pubDate>Thu, 3 Mar 2022 09:21:23 +0900</pubDate>
    </item>
    <item>
      <title>파일 EXIST 체크 access</title>
      <link>https://uple.tistory.com/2844</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;if(&amp;nbsp;access(&amp;nbsp;fname,&amp;nbsp;F_OK&amp;nbsp;)&amp;nbsp;==&amp;nbsp;0&amp;nbsp;){ &lt;br /&gt;//&amp;nbsp;file&amp;nbsp;exists &lt;br /&gt;} &lt;br /&gt;else{ &lt;br /&gt;//&amp;nbsp;file&amp;nbsp;doesn't&amp;nbsp;exist &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;F_OK&amp;nbsp;파일&amp;nbsp;존재여부 &lt;br /&gt;R_OK&amp;nbsp;파일&amp;nbsp;read&amp;nbsp;퍼미션&amp;nbsp;여부 &lt;br /&gt;W_OK&amp;nbsp;파일&amp;nbsp;write&amp;nbsp;퍼미션&amp;nbsp;여부 &lt;br /&gt;X_OK&amp;nbsp;파일&amp;nbsp;execute&amp;nbsp;퍼미션&amp;nbsp;여부&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <category>Access</category>
      <category>F_OK</category>
      <category>R_OK</category>
      <category>W_OK</category>
      <category>X_OK</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2844</guid>
      <comments>https://uple.tistory.com/2844#entry2844comment</comments>
      <pubDate>Tue, 22 Feb 2022 21:59:46 +0900</pubDate>
    </item>
    <item>
      <title>C-ISAM - Indexed Sequential Access Method Programmer&amp;rsquo;s Manual</title>
      <link>https://uple.tistory.com/2841</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;http://www.50001.com/db/informixside/data/cisam.pdf&quot;&gt;http://www.50001.com/db/informixside/data/cisam.pdf&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/cl2Nsz/btrtIUkibCz/QoG3KPwBs7ZPsYurKfY2Qk/cisam_Programmer_Manual.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;cisam_Programmer_Manual.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;1.20MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>programming/C_C++</category>
      <category>C-ISAM</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2841</guid>
      <comments>https://uple.tistory.com/2841#entry2841comment</comments>
      <pubDate>Sat, 19 Feb 2022 16:08:38 +0900</pubDate>
    </item>
    <item>
      <title>알이백(RE100)</title>
      <link>https://uple.tistory.com/2840</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;알이백(RE100)&lt;br&gt;재생에너지(Renewable Energy) 100%'의 줄임말.&lt;br&gt;기업이 사용하는 전력량의 100%를 2050년까지 재생에너지로 충당하겠다는 용어.&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>knowledge</category>
      <category>알이백</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2840</guid>
      <comments>https://uple.tistory.com/2840#entry2840comment</comments>
      <pubDate>Mon, 7 Feb 2022 08:24:56 +0900</pubDate>
    </item>
    <item>
      <title>선거관련 여론조사 목적의 휴대폰 가상 번호 제공 안내 거부</title>
      <link>https://uple.tistory.com/2839</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;선거관련 여론조사 목적의 휴대폰 가상 번호 제공 안내 거부&lt;br&gt;SKT&amp;nbsp;&amp;nbsp;: 1547&lt;br&gt;&lt;br&gt;KT :&amp;nbsp;&amp;nbsp;080-999-1390&lt;br&gt;&lt;br&gt;LG U+ : 080-855-0016&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>knowledge</category>
      <author>공간사랑</author>
      <guid isPermaLink="true">https://uple.tistory.com/2839</guid>
      <comments>https://uple.tistory.com/2839#entry2839comment</comments>
      <pubDate>Wed, 2 Feb 2022 23:29:59 +0900</pubDate>
    </item>
  </channel>
</rss>