본문 바로가기

[+] Information/[-] Network

[2009/06/28] 예제소스(pipe1.c) /* pipe1.c */ #include #include #include #define BUFSIZE 30 int main(int argc, char **argv) { int fd[2]; // 파이프 리턴값 저장할 배열 선언. char buffer[BUFSIZE]; pid_t pid; int state; state = pipe(fd); // 파이프 생성 if(state == -1) { puts("pipe() error"); exit(1); } pid = fork(); // 프로세스 복사 if(pid == -1){ // 프로세스 복사가 안된다면 puts("fork() error"); exit(1); } else if(pid==0){ // 자식프로세스 라면 write(fd[1], "Good\n", 6); }.. 더보기
[2009/06/28] 프로세스간 통신 1. 프로세스간 통신 - 프로세스간 통신의 정의 1) 독립된 프로세스 간에 데이터를 주고 받는 행위를 의미함. - 프로세스간 통신의 문제점. 1) 독립된 프로세스는 공유하는 메모리가 존재하지 않기 때문에 메모리를 공유해서 데이터를 주고 받는 것은 불가능! - 해결책 1) 운영체제는 서로 독립된 프로세스들이 데이터를 주고 받을 수 있도록 '파이프'라는 것을 제공한다. 2. 파이프의 생성 - 파이프 생성 함수 #include int pipe(int fd[2]); 3. 파이프의 생성과 프로세스간 통신 더보기
[2009/06/27] 예제소스(echo_multiserv.c, echo_multiclnt.c) /* echo_multiserv.c */ #include #include #include #include #include #include #include #include #include #define BUFSIZE 30 void error_handling(char *message); void z_handler(int sig); int main(int argc, char **argv) { int serv_sock; int clnt_sock; struct sockaddr_in serv_addr; struct sockaddr_in clnt_addr; struct sigaction act; int addr_size, str_len, state; pid_t pid; char message[BUFSIZE]; if(.. 더보기
[2009/06/27] 프로세스 기반의 다중접속 서버의 구현. 1. 프로세스 기반 다중 접속 서버의 구현 모델 - 새로운 연결 요청을 수락 할 때마다 프로세스의 생성. 2. 파일 디스크립터의 복사 - 하나의 소켓(파일)에 대한 파일 디스크립터가 둘 이상 존재한느 경우, 모든 파일 디스크립터를 종료 해 줘야 해당 소켓(파일)이 종료 된다. 3. TCP 입출력 루틴의 분할. - 입력과 출력을 실행하는 루틴을 분리한다. 4. TCP 입출력 루틴의 분할의 이점. - 입력과 출력이 독립적이다. 더보기
[2009/09/24] 시그널 핸들링 예제소스(sigint.c, sigint2.c, sigalrm.c, zombie_handler.c) /* sigint.c */ #include #include #include void handler(int sig); int main(int argc, char **argv) { int state; int num=0; signal(SIGINT, handler); while(1) { printf("%d : 대기중 \n", num++); sleep(2); if(num>5) break; } return 0; } /*시그널 처리 함수 */ void handler(int sig) { signal(SIGINT, handler); printf("전달된 시그널은 %d \n", sig); } /* sigint2.c */ #include #include #include void handler(int sig); int mai.. 더보기