将命令执行的输出存储到数组
Store output from command execution to array
我有一个数组 char buffer[300]
,我想在其中存储执行 system("ls")
的输出。我该怎么做呢?更具体地说,我希望它类似于我的伪代码:
int main(void) {
char buffer[300];
//store output to buffer
system("ls");
//after storing output from system("ls") print buffer to terminal
//printf(buffer);
}
system()
做不到。你可以用 popen()
如果你的系统支持的话。
一个类似于你的伪代码的例子(效率不高):
#include <stdio.h>
void runCommand(char* cmd, char* buffer, int size);
int main() {
char buffer[300];
runCommand("ls", buffer, 300);
printf("%s\n", buffer);
return 0;
}
void runCommand(char* cmd, char* buffer, int size) {
int c, i=0;
FILE* stream = popen(cmd, "r");
while ((c = fgetc(stream)) != EOF && i < size-1)
buffer[i++] = c;
buffer[i] = 0; // null terminate string
pclose(stream);
}
更简单的示例 - 逐行打印命令输出:
#include <stdio.h>
void main() {
char buffer[300];
FILE* stream = popen("ls", "r");
while (fgets(buffer, 300, stream) != NULL)
printf("%s", buffer);
pclose(stream);
}
我有一个数组 char buffer[300]
,我想在其中存储执行 system("ls")
的输出。我该怎么做呢?更具体地说,我希望它类似于我的伪代码:
int main(void) {
char buffer[300];
//store output to buffer
system("ls");
//after storing output from system("ls") print buffer to terminal
//printf(buffer);
}
system()
做不到。你可以用 popen()
如果你的系统支持的话。
一个类似于你的伪代码的例子(效率不高):
#include <stdio.h>
void runCommand(char* cmd, char* buffer, int size);
int main() {
char buffer[300];
runCommand("ls", buffer, 300);
printf("%s\n", buffer);
return 0;
}
void runCommand(char* cmd, char* buffer, int size) {
int c, i=0;
FILE* stream = popen(cmd, "r");
while ((c = fgetc(stream)) != EOF && i < size-1)
buffer[i++] = c;
buffer[i] = 0; // null terminate string
pclose(stream);
}
更简单的示例 - 逐行打印命令输出:
#include <stdio.h>
void main() {
char buffer[300];
FILE* stream = popen("ls", "r");
while (fgets(buffer, 300, stream) != NULL)
printf("%s", buffer);
pclose(stream);
}