是否存在类似于UNIX中“whereis”命令的API,可以从C程序调用以找出给定命令的所有实例?
答案 0 :(得分:2)
使用getenv("PATH")
获取':'
- 分隔的目录名称列表。在每个目录中查找命令名称(例如,使用stat()
或access()
)并检查它是否是常规文件并且可以执行。 (如果目录名为空,请改为使用"."
。)这正是which
和whereis
命令的作用。
execvp()
和execlp()
函数在执行给定命令时会自动执行PATH查找,尽管它们似乎不会手动检查每个路径,只需调用execv()
;如果返回错误代码,则只需尝试下一个路径。
答案 1 :(得分:0)
C中有许多不同的函数可用于从程序中启动shell命令。我认为你应该特别关注exec(3)系列。
您可能需要的每个示例都在手册中:man 3 exec
在终端或此处:http://linux.die.net/man/3/exec。
希望这有帮助!