适用于linux中whereis命令的API

时间:2013-09-28 23:53:43

标签: linux unix c

是否存在类似于UNIX中“whereis”命令的API,可以从C程序调用以找出给定命令的所有实例?

2 个答案:

答案 0 :(得分:2)

使用getenv("PATH")获取':' - 分隔的目录名称列表。在每个目录中查找命令名称(例如,使用stat()access())并检查它是否是常规文件并且可以执行。 (如果目录名为空,请改为使用"."。)这正是whichwhereis命令的作用。

execvp()execlp()函数在执行给定命令时会自动执行PATH查找,尽管它们似乎不会手动检查每个路径,只需调用execv();如果返回错误代码,则只需尝试下一个路径。

答案 1 :(得分:0)

C中有许多不同的函数可用于从程序中启动shell命令。我认为你应该特别关注exec(3)系列。

您可能需要的每个示例都在手册中:man 3 exec在终端或此处:http://linux.die.net/man/3/exec

希望这有帮助!