如何在 C 中获取 Linux 命令位置?
How to get Linux command location in C?
我在 C 中使用 execv
,但它需要获取命令的路径才能执行它,例如:
- 要执行
ls
我必须有char* command = "/bin/ls";
- 要执行
gedit
我必须有 char* command = "/usr/bin/gedit";
我的问题是如何在 C 中获取字符串 "/bin"
或 "/usr/bin"
?
您可以从环境中获取 PATH 变量。然后解析它以获取每个组件,然后检查每个组件的位置是否存在给定的命令(文件)。
这基本上就是 which
命令的作用。 linux 实用程序的源代码可以在线找到
哪个命令给出了命令的完整路径。例如,
$ which ls
/bin/ls
所以,你可以在 C 程序中做这样的事情,
system ("which ls >x");
// read file x for complete path of ls
我在 C 中使用 execv
,但它需要获取命令的路径才能执行它,例如:
- 要执行
ls
我必须有char* command = "/bin/ls";
- 要执行
gedit
我必须有 char*command = "/usr/bin/gedit";
我的问题是如何在 C 中获取字符串 "/bin"
或 "/usr/bin"
?
您可以从环境中获取 PATH 变量。然后解析它以获取每个组件,然后检查每个组件的位置是否存在给定的命令(文件)。
这基本上就是 which
命令的作用。 linux 实用程序的源代码可以在线找到
哪个命令给出了命令的完整路径。例如,
$ which ls
/bin/ls
所以,你可以在 C 程序中做这样的事情,
system ("which ls >x");
// read file x for complete path of ls