Push_swap을 구현하고 다음 과제로 Minitalk을 하기로 결정했다.
서브젝트를 읽어보니 재밌어 보였고 쉽게 해낼 수 있을 것 같았다.
Makefile을 통해 두 개의 파일을 생성해야한다.
server
client
server
가 먼저 실행되며 PID가 출력된 후 client
의 siganl
을 대기한다.
client
는 ./clinet SERVER_PID SEND_STRING
과 같이 argc가 3으로 고정되게 실행하며 문자열을 전송한다.
이 때 사용가능한 siganl은 USR1, USR2 두 개로 제한된다.
서버는 다수의 client에게 연속적으로 문자열을 받을 수 있어야하며 최대한 빠르게 문자를 출력해준다.
char
변수와 들어온 BIT가 8개인지 확인할 int
변수를 선언한다.char
변수에 비트를 밀어 넣는다. 8개의 시그널을 받을 시 글자를 출력하고 시그널 수를 0으로 초기화하며 다음 글자를 기다린다.이 때, char
변수에 한 글자만큼 넣기 위해선 client
프로그램에선 글자의 최상위 비트부터 한 비트씩 server
에 시그널을 보내고, server
는 최상위 비트부터 char
에 비트를 받는다.
kill()
명령어를 통해 server에 시그널을 보낸다.어떻게 글자를 bit로 변환시키는지 (단순 연산, 비트 연산 등)와 signal이 무엇이고 전달되는 과정이 어떻게 되는지, 시그널을 보내고 대기를 하는 이유가 무엇인지, process가 무엇인지 (아주 가볍게) 정도만 공부하면 무난하게 통과할 수 있다.