在C语言中,可以使用popen()函数来执行一个shell命令,并通过管道获取该命令的标准输出。要从popen()函数中读取stdout并将其存储在char数组中,可以按照以下步骤进行:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BUFFER_SIZE 1024
char buffer[MAX_BUFFER_SIZE];
FILE *pipe = popen("your_command", "r");
if (pipe == NULL) {
printf("Failed to open pipe\n");
return -1;
}
在上述代码中,将"your_command"替换为你想要执行的shell命令。
fgets(buffer, MAX_BUFFER_SIZE, pipe);
上述代码将从管道中读取一行stdout,并将其存储在buffer数组中。
pclose(pipe);
完整的示例代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BUFFER_SIZE 1024
int main() {
char buffer[MAX_BUFFER_SIZE];
FILE *pipe = popen("your_command", "r");
if (pipe == NULL) {
printf("Failed to open pipe\n");
return -1;
}
fgets(buffer, MAX_BUFFER_SIZE, pipe);
pclose(pipe);
printf("Output: %s\n", buffer);
return 0;
}
在上述代码中,将"your_command"替换为你想要执行的shell命令。执行完毕后,stdout的内容将存储在buffer数组中,并通过printf()函数打印出来。
注意:在使用popen()函数时,要确保你执行的shell命令不会导致安全问题,以及对输入进行适当的验证和过滤,以防止命令注入等安全漏洞。
领取专属 10元无门槛券
手把手带您无忧上云