【问题标题】:killing a child process if execvp fails如果 execvp 失败则终止子进程
【发布时间】:2011-07-22 03:27:01
【问题描述】:

我有一个 C 程序,其结构类似于:http://www.csl.mtu.edu/cs4411/www/NOTES/process/fork/exec.html(也就是说,它是一个 shell,在输入时使用 execvp 运行一个命令,并无限循环直到输入“exit”)。

如果将无法识别的命令传递给 execvp,立即终止子进程的最佳方法是什么?例如,如果我输入“ehco”而不是“echo”,我怎么能快速杀死这个子进程?我注意到如果我输入一个不在我的 PATH 中的命令,然后立即键入 exit,它不会退出,直到我稍后再次键入 exit。

【问题讨论】:

    标签: c bash shell


    【解决方案1】:

    链接的例子已经做了正确的事:孩子应该在execvp()之后无条件地调用_exit()execvp() 只有在失败时才会返回。

    (换句话说,您不会从父进程中杀死子进程;您等待子进程退出,然后编写子进程,以便在 exec 失败时杀死自己)。

    【讨论】:

    • 这就是我的代码与示例不同的地方。我认为用 return -1 返回一个 -1 值就足够了;谢谢你。
    猜你喜欢
    • 1970-01-01
    • 2014-11-27
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 2017-04-06
    • 2014-05-10
    相关资源
    最近更新 更多