2

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

4

2 回答 2

2

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

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

于 2013-09-29T01:00:22.687 回答
0

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

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

希望这可以帮助!

于 2013-09-29T00:09:31.717 回答