我有一个类似结构的C程序:http://www.csl.mtu.edu/cs4411/www/NOTES/process/fork/exec.html(也就是说,它是一个shell,在输入时用execvp运行一个命令,并且无限循环直到输入“exit”)。
如果将无法识别的命令传递给execvp,立即终止子进程的最佳方法是什么?例如,如果我键入“ehco”而不是“echo”,我怎么能快速杀死这个子进程?我注意到如果我输入的命令不在我的PATH中,然后立即键入exit它不会退出,直到我再次输入exit。
答案 0 :(得分:2)
链接的示例已经做了正确的事情:孩子应该在_exit()
之后无条件地拨打execvp()
。 execvp()
只有在失败时才会返回。
(换句话说,你不会从父进程中终止子进程;你等待子进程退出,并编写子进程,以便在exec失败时自动终止它。)