일단 테스트 16개는 다 통과했어용(vimdiff로 눈으로 비교해가면서 화긴!)


코드는 아래에있습니다.

https://github.com/prin2/shlab/blob/master/tsh.c

혹시시간남으시면 보고 피드백부탁드려요. (race condition이나 버그있을경우)


직접 코딩해보면서 sigchld_handler 계속 수정해가면서 했는데 아직도

waitpid(-1, &status, (WNOHANG | WUNTRACED))의 3번째 인자인 option이 잘 이해가 안가네요 ㅠㅠ

구글에 돌아다니는 pdf 쪼가리에 힌트보니까 이옵션쓰면 유용하다고 되어있어서 썼어요.


WNOHANG은 blocking 피하려고 하는거고

WUNTRACED는 stop signal 받았을때 이걸

sigchld_handler가 인지하게 하려고 넣는거라고

머릿속에 감은 잡히는데 아직 명쾌하게 풀리진 않아서

다른 간단한 예제몇번 짜봐야 할것 같네요.


마지막으로 bash 쉘 만든사람은 정말 대단한것 같아용 ㅋㅋ