我想找到使用哪个命令的路径名:
system("which");
然后我使用输出作为execv()
函数的参数。我怎样才能做到这一点?有什么建议吗?
答案 0 :(得分:3)
你正试图以错误的方式解决它。 PATH
使用which
变量来查找给定的可执行文件。使用execv()
获取路径然后将其传递给exec*
是不必要的,因为#include <limits.h>
#include <stdio.h>
char str[LINE_MAX];
FILE *fp = popen("which ls", "r");
if (fp == NULL) {
/* error */
}
if(fgets(str, sizeof str, fp) == NULL) {
/* error */
}
/*remove the trailing newline, if any */
char *p = strchr(str, '\n');
if (p) *p = 0;
的另一个变体执行相同的操作:execvp()
。
要阅读命令的输出,您可以使用popen()
:
snprintf()
如果您的二进制文件位于某个缓冲区中,则可以使用popen()
形成react-native init MyProject
的第一个参数。