CSAPP:撸一个Shell(三)(完)
(三)Ctrl+Z后卡死?? 进一步的测试我发现ctrl+z发送暂停信号给子进程后Shell进入了暂停状态, 子进程进入暂停状态,父进程也暂停了,我发现暂停是发生在取消信号阻塞的时候,我猜想是由于子进程暂停的时候发送了父进程但是没有处理而发生了阻塞,于是我试着在SIGCHLD处理函数中的waitpid将option添加WUNTRACED去接受子进程…
CSAPP:撸一个Shell(二)
(二)接收不到子进程发送的SIGCHLD?? 解决了前后进程的问题,很快又遇到了另外一个让我绞尽脑汁的问题,Shell创建的第二个子进程变成了zombie进程。不应该啊,因为我已经写了SIGCHLD的处理函数,如果子进程terminate,应该会发送一个SIGCHLD信号给Shell然后Shell进入处理函数进行回收。经过了printf的调试后我发…