문자 수신? 문자열 수신은 이전 단계에서 진행한 것처럼 문자를 비트로 수신받아 그 비트들을 쉬프트 연산을 통해 숫자를 만들어주면 된다. 이때 신호를 받기 위해서 signal이라는 함수를 사용해야한다. 해당 함수는 특정 신호를 받았을 때 등록된 함수를 실행시켜준다. 그래서 SIGUSR1, SIGUSR2를 받았을 때 그에 맞게 함수를 꾸려주면 해당 과제를 수행할 수 있다. 그리고 문자열의 끝을 만나면 해당 문자열을 출력해주기만 하면 문자열 수신이 완료된다. 이렇게 기능을 구현하여 알맞게 살을 붙여 코딩을 진행하면 100점을 맞을 수 있다!
문자 전송? 문자열 전송은 다수의 문자를 순서에 맞게 보냄으로써 해결할 수 있다. 문자를 보내는 방법을 알게된다면 그 행위를 반복함으로써 문자열 전송을 해결할 수 있다. 그렇다면 문자는 어떻게 전송할까? C언어에서 문자는 아스키 코드로 표현되고 그로인해 문자를 숫자에 각각 대응시킬 수 있다. 예를 들면 문자 'a'는 97이라는 숫자에 대응할 수 있다. 또한 우리는 97이라는 숫자를 2진법으로 나타낼 수 있다. 나타내면 이와 같은 숫자가 나온다. (1100001) 다시 문제로 돌아가 우리는 SIGUSR1, SIGUSR2 이렇게 2개의 신호를 사용할 수 있다. 또한 숫자의 비트는 쉬프트 연산을 이용하여 얻어낼 수 있다. 이제 1을 만나면 SIGUSR1을 보내고, 0을 만나면 SIGUSR2를 보냄으로써 97이..
Minitalk 서브젝트는? 클라이언트에서 서버로 문자열을 전송해 서버에서 그 문자열을 출력하는 두 개의 프로그램을 만드는 문제다. 정말 간단한 느낌이지만 서로 다른 프로세스로 동작하기 때문에 어떻게 처리해야할지 고민을 해야한다. 이것을 해결하기 위해 서브젝트에서 제시한 내용은 UNIX 시스템의 signal이다. 그리고 signal 중에서도 SIGUSR1과 SIGUSR2 만 사용하는 것을 조건으로 제시했다. 즉, 2가지 Unix signal을 이용하여 문자열을 주고 받는 2개의 프로그램을 만드는 것이 minitalk이다. 그러면 이제 다음 글을 통해 어떻게 풀 것인지 알아보자! 밑에는 다음 글을 보기 전에 미리 알면 좋을 힌트다~ 문제 풀이 힌트 출처 https://www.quantil.com/conte..