我有一个数组char buffer[300]
,其中我想存储执行system("ls")
的输出。我该怎么做呢?更具体地说,我希望它类似于我的pesudocode:
int main(void) {
char buffer[300];
//store output to buffer
system("ls");
//after storing output from system("ls") print buffer to terminal
//printf(buffer);
}
答案 0 :(得分:2)
您无法使用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);
}