2011. 7. 30. 11:15
01. 프로세스에 대한 설명_ (OX 문제, 책에_)

02. fork 함수...... (OX문제, 책에_)

03. 자식 프로세스가 생성되면 부모 프로세스의 모든 것을 복사하는데, 이때 복사의 대상으로 소켓의 파일 디스크립터도 포함이 된다. 그러다면 복사한 파일 디스크립터의 정수 값은 원본 파일 디스크립터의 정수 값과 동일한지 확인하기 위한 프로그램을 작성해 보자.

04. 프로세스가 좀비가 되는 경우에 대해서 설명하고, 이를 막기 위해서 어떠한 방법을 취해야 하는지 설명해 보자.
* 자식프로세스가 종료되는 상황
  - 인자를 전달하면서 exit를 호출하는 경우
  - main 함수에서 return 문을 실행하면서 값을 반환하는 경우
* 좀비가 되는 경우 : 자식프로세스의, exit 함수로 전달되는 인자값과 main함수의 return 문에 의해 반환되는 값 모두 운영체제로 전달된다. 그리고 운영체제는 이 값이 자식 프로세스를 생성한 프로세스에게 전달될 때까지 자식프로세스를 소멸시키지 않는데, 바로 이 상황에 놓여있는 프로세스를 가리켜 "좀비 프로세스"라 한다.

아래의 함수를 사용하여, 자식프로세스의 종료됨을 알린다.(자식 프로세스의 전달 값을 요청)
방법 1 : wait 함수 사용    (블로킹 될 수 있음)
방법 2 : waitpid 함수 사용(블로킹 되지 않음)



05. SIGINT에 대한 핸들러를 등록하지 않은 상태에서 Ctrl+C키가 입력되면, 운영체제가 지정해 놓은 디폴트 이벤트 핸들러에 의해서 프로그램이 종료되어 버린다. 그러나 Ctrl+C키에 대한 핸들러를 직접 등록하면 프로그램은 종료되지 않고 프로그래머가 지정한 이벤트 핸들러가 대신 호출된다. 그렇다면 일반적인 프로그램에서 다음과 같이 동작하도록 이벤트 핸들러 등록을 위한 코드를 구성해 보자.
"Ctrl+C키가 눌리면, 정말로 프로그램을 종료할 것인지 묻고, 이에
 대한 대답으로 'Y'가 입력되면 프로그램을 종료한다."

그리고 간단히 문자열은 1초당 한번 정도 반복 출력하는 프로그램을 작성해서 위의 이벤트 핸들러 등록 코드를 적용시켜보자.
Posted by Triany