Home Minitalk ① Subject
Post
Cancel

Minitalk ① Subject

thumbnail

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
This post is licensed under CC BY 4.0 by the author.

Born2beroot ⑥ 체크 사항

함수 포인터