안녕하세요 csapp shell lab에서
myspin n은 n초간 sleep한담에 종료하는 프로그램인데
아래는 tshref를 돌린 결과입니다.
tsh> ./myspin 10
^CJob [1] (11748) terminated by signal 2 (10초 다지나기전에)
tsh> jobs
tsh>
질문1. 이런식으로 tshref는 결과가 나오던데, sigint_handler에서 그러면 foreground job을 찾은담에 kill(-pid, sig)를 통해 프로세스 그룹아이디가 |pid|(자식 프로세스의 pid의 절댓값)을 가지는 모든 프로세스에게 sig를 보내도록 짜주는게 맞나요?
질문2. 만약 그렇다면 최종적으로는 sigchld_handler에서 WIFSIGNALED(status) 이면 Job [1] (11748) terminated by signal 2과 같은 form으로 printf 해주는거죠?
질문3. sigstp_handler에서도 이와 비슷한 방법으로 kill을 통해서 stop 시그널만 보내주고, 최종적으로는 sigchld_handler에서 처리해주는거죠?
쉘렙 으려워요 ㅠㅠ
아 추가로 sigchld_handler에서 signal을 받아서 종료한경우는 job을 delete 해주고, signal을 받아서 stop된 경우는 job의 상태를 ST로 바꿔주는거죠?
잘 모르겠지만 일단 질러보셈 ㅋㅋㅋ
한번에 다 하려 하지는 마시고 조금씩 쌓아나간다는 느낌으로 하면 어느새 완성되여 거기 테스트 케이스들 있잖아여
그 테스트들 Makefile이나 sh 스크립트 가지고 테스트 하는 거 자동화해두면 편할거임
sh스크립트 쓰는법을 몰라서 ㅠㅠ 그냥 make test05 > 5.txt, make rtest05 > r5.txt 해갖고 vimdiff 5.txt r5.txt로 비교하는중인뎅
메이크 파일을 수정해서 그걸 자동화할 수 있어용