1

我想使用 which 命令查找路径名,如下所示:

system("which");

然后我将输出用作execv()函数的参数。我怎样才能做到这一点?有什么建议吗?

4

1 回答 1

3

您正试图以错误的方式解决它。which使用该PATH变量来定位给定的可执行文件。使用which来获取路径然后将其传递给execv()是不必要的,因为还有另一个变体exec*可以做到这一点:execvp().


要读取命令的输出,您可以使用popen()

#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; 

如果您的二进制文件在某个缓冲区中,那么您可以使用它snprintf()来形成popen().

于 2015-12-10T20:28:45.147 回答