Summary
이번 프로젝트에서는 유닉스 시그널을 통해 소규모의 데이터를 교환하는 프로그램을 구현합니다.
Mandatory Part
- 클라이언트와 서버의 형태로 통신 프로그램을 만들어야 합니다.
- 서버가 먼저 시작돼고 그 후에 해당 PID를 나타내야 합니다.
- 클라이언트는 다음과 같은 매개 변수를 사용합니다.
- 서버 PID
- 전송해야 하는 문자열
- 클라이언트는 매개 변수로 전달된 문자열을 서버에 전달해야 합니다. 문자열이 수신되면 서버에서 해당 문자열을 표시해야 합니다.
- 프로그램 간의 통신은 UNIX 신호를 통해서만 이루어져야 합니다.
- 서버는 문자열을 매우 빠르게 표시할 수 있어야 합니다. 즉, 너무 길다고 생각되면 너무 긴겁니다. (Hint: 100자를 보낼 때 1초가 걸린다면 엄청 긴겁니다)
- 서버는 재시작할 필요 없이 여러 클라이언트로부터 연속적으로 문자열을 수신할 수 있어야 합니다.
- SIGUSR1 과 SIGUSR2 신호만 사용할 수 있습니다.
이 유형의 보류 중인 신호가 이미 있을 경우 Linux 시스템이 신호를 대기열에 넣지 않습니다! 보너스 타임?
Bonus Part
- 서버는 클라이언트에 신호를 전송하여 수신된 모든 신호를 확인합니다.
- 유니코드 문자를 지원합니다!
주의 사항
- 실행 파일의 이름은
client
와server
로 지정해야 한다. - 오류를 민감하게 처리해야 한다. 프로그램이 예기치 않게 종료되면 안된다. (segmentation fault, bus error, double free, 등)
- 프로그램에 메모리 누수가 있으면 안된다.
- 하나의 전역 변수를 사용할 수 있지만 이유가 합리적이어야 한다.
- Manadatory part 허용 함수 목록 :
- write
- ft_printf and any equivalent YOU coded
- signal
- sigemptyset : initializes a signal set to be empty
- sigaddset : adds the specified signal signo to the signal set.
- sigaction
- kill : send signal to a process
- getpid
- malloc
- free
- pause
- sleep
- usleep
- exit