pid = wait(&exit_status) 질문입니다.
365
작성한 질문수 22
C언어에서 기본적으로
A = B이면
B라는 값을 A에 할당한다. (Assignment Operator)로 알고있는데요.
pid = wait(&exit_status)를 쓰면 어떻게 부모 프로세스가 자식 프로세스가 종료되기를 기다리는건지 모르겠습니다.
정확히 말하면 &exit_status가 어떻게 생성되는건지 설명을 부탁드립니다.
wstatus가 자식의 종료 상태를 의미한다는데 저 코드 내부에서는 자식의 종료상태를 어떻게 반환한건지 명시가 되어있지 않은거같아 여쭤봅니다....!
추가로 프로세스 여러개를 fork() 할 경우 - 자식 프로세스 여러개 생성시 terminate 할때
wait()를 어떻게 코딩해야 할지 고민이 됩니다..... 혹시 이에 관해 고견 여쭤봐도 될지요...?
답변 1
0
안녕하세요. 김윤식님.
답변 드립니다.
C언어에서 = 는 할당 연산자가 맞습니다.
다만 오른쪽에 함수가 있는 경우, 함수를 실행하고 함수가 return해준 값을 왼쪽 변수에 저장하게 됩니다.
pid = wait(&exit_status) 에서...
wait() 함수는 자식 프로세스가 종료되기를 기다리다가 자식 프로세스가 종료되면 그제서야 함수가 리턴됩니다.
wait() 함수가 리턴해주는 값은 종료된 자식 프로세스의 pid 입니다. 그 값이 pid 변수에 저장되겠네요.
wait() 함수가 리턴될 때 exit_status 변수도 적절히 설정합니다. exit_status 변수를 통해 자식 프로세스의 종료 상태에 대한 정보를 얻을 수 있습니다. wait() 함수의 man page를 보시면 WEXITSTATUS() 등의 매크로를 확인하실 수 있습니다. 이런 매크로를 이용해 자식 프로세스의 정보를 얻는 것입니다.
여러 자식 프로세스에 대한 프로그래밍 방법은.. 어떤 프로그램을 작성하시는 것이냐에 따라 설계가 달라질 수 있습니다. 단순히 10개의 자식을 만들고 자식이 모두 죽기를 기다린다고 한다면 wait()을 10번 호출하면 될 것입니다. 각각의 자식 프로세스마다 특별한 작업을 하려면 각 자식 프로세스의 PID를 저장해두었다가 PID 별로 따로 처리해주어야겠죠. 프로그램의 목적에 따라 달라질 수 있는 부분이라 제가 정확히 설명드리기는 조금 어려운 부분입니다.
질문에 답이 됐는지 모르겠네요. 추가 질문 있으시면 댓글로 남겨주세요 :)
inotify 객체에 등록된 watch descriptor 해제 관련 질문
0
29
2
select API 실습 코드 질문
0
34
2
wsl에서 fcntl사용
0
71
2
inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...
0
178
2
./stat 파일이름
0
272
2
fopen r, r+모드 차이
0
459
2
강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?
0
325
1
pthread 질문
0
419
2
I/O Multiplexing(select) 질문
0
323
1
inotify.c. ret 질문
0
300
1
inotify.c 질의합니다.
1
316
1
child process
0
714
1
read/blocking
0
563
1
flock
0
563
1
system call
0
595
1
pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?
0
486
1
fork() 함수 사용시 결과 관련 질문
0
370
1
exec 관련 궁금한 사항
0
450
2
파일 디스크립터와 FILE 구조체에 대한 질문
0
551
1
buf 선언에 따른 read() fail 문제
0
250
2
파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문
0
251
1
2번 multi thread 방법 질문
0
241
1
segmentation fault 발생 관련 문의
1
837
1
라이브 코딩 실습 코드
0
230
1





