C代码调用system执行命令后,如何获取结果
时间: 2024-10-26 19:17:52 浏览: 16
易语言控制台调用CMD命令
在C语言中,你可以使用`system()`函数来执行操作系统命令,但它本身并不直接返回命令的结果。`system()`函数会阻塞直到命令完成,但不保存其输出。如果你想要获取命令的输出,你需要使用其他的手段,如管道(pipe)或者子进程标准流(fork+exec系列函数)。
下面是一个使用`popen()`函数获取命令输出的例子,它创建了一个指向子进程输入和输出的文件描述符对:
```c
#include <stdio.h>
#include <unistd.h>
int main() {
// 执行命令并获取输出
FILE* pipe = popen("ls -l", "r"); // 这里假设你想列出目录的内容
if (pipe == NULL) {
perror("Error opening pipe");
return 1;
}
char buffer[1024];
while (fgets(buffer, sizeof(buffer), pipe) != NULL) {
printf("%s", buffer); // 打印每一行的输出
}
pclose(pipe); // 关闭管道
return 0;
}
```
这段代码中,`popen()`打开一个到`ls -l`命令的标准输出的管道,然后通过`fgets()`读取每一行输出。当命令结束时,使用`pclose()`关闭管道。
阅读全文