wait()사용 할때 자식 프로세스 종료 인자값을 포인터로 받나요?
글쓴이: haedong / 작성시간: 금, 2007/12/14 - 2:28오전
pid_t wait(&status)
위 문장에서
왜 인자값을 포인터로 받는거죠?
-자식 프로세스가 exit(n);을 실행 했을때 부모 프로세스에게 전달되는 실제 값은 n의 하위 1바이트 뿐이다.
-자식 플세스가 전달한 1바이트 값은 부모 프로세스 쪽의 status 변수의 하위 두번째 바이트에 저장된다.
당췌 이해가 안되네요...
시험공부한답시고 안자서 머리에 안들어오는 건가요...
왜 그냥 값을 받지 않고 주소를 받는 걸까요?
추가>>
exit(n)에서 반환되는 값이 어떠한 값이라도
전달되는 값은 마지막 1바이트이니 그것을 명시하는거라고 이해하면 되는건가요?
Forums:
wait 시스템콜
wait() 시스템 콜은 종료된 자식의 pid만 리턴합니다.
이 리턴 값으로 부모 프로세스로서는 자식이 종료 된 것만 확인할 수 있고
정상종료 되었는지 아닌지 그 종료 상태를 알수가 없기 때문에
자식이 종료됐을때 종료 상태를 status에 넘겨 받게 되는거죠.
즉 wait 시스템콜은 status의 주소를 넘겨 받아서 거기에 자식 프로세스의 종료상태를 기록해주는거구요
이렇게 하면 부모 프로세스는 자식이 종료 될때 상태를 알 수 있게되죠
이런종류의 시스템
이런종류의 시스템 콜이나 status를 넘겨 받을때는 value보다 주소를 참고하는 경우가 대부분입니다. 변수 선언때부터 포인터로 지정하거나 롱다님께서 말씀하신 것처럼 pid를 리턴할때 그게 포인터로 지정되있기 때문이기도 합니다. 일일이 커널분석이 힘들기에 그냥 이건 이렇구나 라고 생각하시고 기억해두시면 됩니다.
---------------------------------------------------
야!...
흠. 질문하신분의 의도는..
제가 생각하기에.. 질문하신분 의도가
와
답이 될것 같습니다.
라는 문구때문에 이렇게 생각했습니다.
아니라면 죄송합니다.
언제나 시작
댓글 달기