gpt4 book ai didi

c++ - 如何确保 child 在 exec-call 之后还活着?

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:57 25 4
gpt4 key购买 nike

有没有一种安全的方法或常见做法可以确保我用 execvp 执行的 child 生活在良好状态?

例如:我让我的程序的用户为程序中的一些数据选择一个自定义处理器(假设他想用 bzip2 -zc - 处理它们)。我使用通常的 fork()execvp() 创建这个进程,并为每个 stdin、stdout 和 stderr 创建一个 pipe()、dup2()。但是我无法影响用户是否给我一个正确的命令调用或者会因为某些参数错误而死掉的东西(例如,他可能给我 cat foo 但文件 foo 不存在因此 cat 将立即退出)。

我能否以某种方式确保至少在我执行此用户命令之后和开始向它输入输入之前它处于良好状态 - 等待我的输入 - 而不是已经死亡或死亡?

最佳答案

你可以使用

waitpid(ChildPID, &status, WNOHANG); 

如果它返回 0 表示 child 还活着。

关于c++ - 如何确保 child 在 exec-call 之后还活着?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19681706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com