问题
I'm writing a C program under Android/Linux that runs a system command. The command outputs some text to stdout, and I'm trying to capture the output into a string or character array.
For example:
system("ls");
would list the contents of the current directory to stdout, and I would like to be able to capture that data into a variable programmatically in C.
How do I do this?
Thanks.
回答1:
You want to use popen. It returns a stream, like fopen. However, you need to close the stream with pclose. This is because pclose takes care of cleaning up the resources associated with launching the child process.
FILE *ls = popen("ls", "r");
char buf[256];
while (fgets(buf, sizeof(buf), ls) != 0) {
/*...*/
}
pclose(ls);
来源:https://stackoverflow.com/questions/11840833/getting-output-of-a-system-command-from-stdout-in-c