wait() 후에 쉘은 어떻게 터미널 제어권을 얻나요?

wait() 후에 쉘은 어떻게 터미널 제어권을 얻나요?

우리는 쉘을 알고 있으며 forks()이를 다른 프로세스 그룹에 할당하고 이를 전경 프로세스 그룹으로 만들어 하위 프로세스 그룹으로 이동 cntrl-c하고 cntrl-z상위 프로세스가 이를 기다립니다. 하지만 아이가 끝난 후 부모는 어떻게 단말기를 돌려받나요?

나는 껍질을 만든다. 위의 부모를 myshell로 생각하고 위의 자식을 내가 내릴 명령으로 생각하세요. child(command)는 exec() 일련의 함수를 사용하여 실행됩니다. 내 부모(셸)가 터미널 반환을 받지 못하는 것을 확인했습니다( tcgetpg(pid)after를 사용하여 확인했습니다 wait()).

답변1

tcsetpgrp특정 터미널에 대한 포그라운드 프로세스 그룹을 설정하여 쉘이 다시 포그라운드 프로세스가 되도록 하는 함수가 있습니다 . 또한 tcgetpgrp언급한 함수는 pid 대신 파일 설명자를 매개변수로 사용합니다. 두 기능 모두에 대한 매뉴얼 페이지를 살펴보는 것이 좋습니다.

관련 정보