有没有办法将system命令的输出存储到char数组中,因为system命令只返回int。
答案 0 :(得分:2)
无法检索system(3)
的输出。好吧,您可以将执行的任何命令的输出重定向到文件,然后打开并读取该文件,但更合理的方法是使用popen(3)
。
popen(3)
替换system(3)
,它允许您读取命令的输出(或者,根据您传递的标志,您可以写入命令的输入)。
这是一个执行ls(1)
并打印结果的示例:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
FILE *ls_cmd = popen("ls -l", "r");
if (ls_cmd == NULL) {
fprintf(stderr, "popen(3) error");
exit(EXIT_FAILURE);
}
static char buff[1024];
size_t n;
while ((n = fread(buff, 1, sizeof(buff)-1, ls_cmd)) > 0) {
buff[n] = '\0';
printf("%s", buff);
}
if (pclose(ls_cmd) < 0)
perror("pclose(3) error");
return 0;
}