如何在 C 中获取 Linux 命令位置?

How to get Linux command location in C?

我在 C 中使用 execv,但它需要获取命令的路径才能执行它,例如:

我的问题是如何在 C 中获取字符串 "/bin""/usr/bin"

您可以从环境中获取 PATH 变量。然后解析它以获取每个组件,然后检查每个组件的位置是否存在给定的命令(文件)。

这基本上就是 which 命令的作用。 linux 实用程序的源代码可以在线找到

哪个命令给出了命令的完整路径。例如,

$ which ls
/bin/ls

所以,你可以在 C 程序中做这样的事情,

system ("which ls >x");
// read file x for complete path of ls