如何执行命令并在C中读取其输出

时间:2015-12-10 20:16:17

标签: c unix system execv

我想找到使用哪个命令的路径名:

system("which");

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

1 个答案:

答案 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的第一个参数。