C代码来捕获system()数据

如何从system()命令捕获输出? 例如system("ls")应该得到我在该目录中的所有文件。 我正在使用一台Linux机器(如果这有什么区别)。 另外我知道popen可以用来redirect的数据已经在这里回答了

系统()命令捕获标准输出最佳

但我特别想使用system命令。 有没有办法做到这一点,而不redirect输出到像文件system("ls >> filename")

好的,所以我找到了一个办法

 dup2(out_pipe[1], STDOUT_FILENO); close(out_pipe[1]); system(command); fflush(stdout); read(out_pipe[0], buffer, MAX_LEN); 

这可以用来使用管道重定向系统命令的输出

你可以使用popen()#include

  FILE *popen(const char *command, const char *type); int pclose(FILE *stream); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): popen(), pclose(): _POSIX_C_SOURCE >= 2 || _XOPEN_SOURCE || _POSIX_SOURCE _BSD_SOURCE || _SVID_SOURCE