【发布时间】:2017-02-24 21:07:03
【问题描述】:
我在C中使用execv,但它需要获取命令的路径才能执行,例如:
- 要执行
ls我必须有char* command = "/bin/ls"; - 要执行
gedit我必须有 char*command = "/usr/bin/gedit";
我的问题是如何在 C 中获取字符串 "/bin" 或 "/usr/bin"?
【问题讨论】:
-
改用
execvp()?它在 PATH 中的目录中搜索以尝试查找命令。或者你可以模拟它,但这更难。 -
它正在工作,但我想知道一种获取命令位置的方法。谢谢:)
-
遍历
PATH环境变量中的每个路径,并在每个文件夹中搜索所需文件。 -
依次遍历 PATH 中列出的每个目录,查看文件是否存在并且用户是否可执行。这是可行的,但处理诸如 ACL 之类的复杂性以获得权限是很棘手的——这是您不应该在第一次通过时烦恼的事情,但您可能需要稍后再进行处理。或者也许你不会;我还没有这样做,尽管那一天可能会到来。
-
顺便说一句,没有标准库函数来执行此操作的事实表明,在实践中并不经常需要它——或者每个人都编写了自己的变体,并且没有一个单一的接口占主导地位.
标签: c linux command-line command