繁体   English   中英

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

[英]How to execute a command and read its output in C

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

system("which");

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

你试图以错误的方式解决它。 which使用PATH变量来定位给定的可执行文件。 使用which来获取路径然后将其传递给execv()是不必要的,因为exec*的另一个变体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()的第一个参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM