멀티태스킹 기반 서버
Network / 2011/05/20 11:52
fork()명령어로 복사본 프로세스 생성. 부모 프로세스의 모든 메모리 공간을 그대로 복사 후 그 후부터는 따로 실행. 메모리 공유 안함.
좀비 프로세스: 일안하고 그냥 있는 프로세스
자식 프로세스가 exit, return으로 값 반환하면 그 값이 커널로 가는 데 그값을 부모 프로세스에 전달 후 자식 프로세스가 소멸됨. 부모가 그 리턴값 안읽으면 자식이 좀비됨. wait(), waitpid() 사용으로 해결. 시그널 핸들링으로 해결.
시그널 핸들링
void (*signal( int signum, void (*func)(int)))(int)
int sigaction( int signum, const struct sigaction *act, struct sigaction *oldact) //이게 더좋음
시그널 예약
unsigned int alarm(unsigned int second)
임의의 시간이 지나서 시그널 발생.
멀티 프로세스를 이용해서 입출력 루틴 분할 가능.
프로세스간 통신을 위해서 파이프 생성해야함. 파이프는 프로세스에 독립적.
int pipe( int fd[2])
데이터를 프로세스들이 주고 받을때는 파이프 두개 생성하는 것이 일반적임.
