在execvp和wait()之后无法获得控制权

时间:2013-07-11 03:01:38

标签: c shell controls fork execvp

我正在编写一个小shell,它必须执行我解析的命令。

f是这样的char **:[ls] [ - la] p是相同的,使用如下:[wc] 所以我试着在wc中管道ls -la。 我的问题是,当我执行“ls -la | wc&& date”时,它适用于管道,我的minishell会关闭,它不会执行“date”。我使用wait函数等待它完成但没有做任何事情。看起来它被卡住并在第二个execvp之后退出。

我的数组以NULL结尾。 ls -la | wc执行得很好,但在此之后我又回到了bash。 我已尝试使用execlp和execl但我认为这不是问题,因为我需要我的第一个参数(ls + -la)的选项。 请问你能帮帮我吗 ? 在此先感谢:)

1 个答案:

答案 0 :(得分:1)

所有形式的exec永远不会回归;他们用指定的可执行文件替换当前运行的图像。这里的关键词是“替换”。

调用exec*后执行语句的唯一情况是exec失败(例如,如果找不到可执行文件)。