【发布时间】:2021-11-07 16:16:31
【问题描述】:
我想用 execlp 执行一个 shell 命令,我尝试了以下指令:
execlp("sh", "sh", "-c", p_command, (char*)NULL);
p_command 是一个指向 const char 的指针,代表一个 shell 命令行。
我的最小测试告诉我程序按预期成功。我首先选择使用"/bin/sh" 而不是"sh",但我了解到execlp 中的 p(ath) 允许我们避免编写完整路径,好像 exec 会为我们完成路径;所以我删除了“/bin/”。
我担心的是,我从来没有见过只使用“sh”的 execlp 的代码,因为它有效地作为 ls 的示例,我们可以直接使用 "ls" 而不是 "/bin/ls"。
作为一个初学者,我想知道"/bin/sh" 代表什么,在这种情况下"sh" 和"/bin/sh" 有什么区别,为什么我们必须为execlp 编写完整路径来执行shell?
【问题讨论】:
标签: c shell operating-system exec