Linux系统的输出在C程序中调用

我想在我的C程序中操作ls -al命令的输出。 有没有办法做到这一点?

int main() { int return_value; return_value = system("ls -al "); return return_value; } 

你需要一个管道进程。

 #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char output[1024]; fp = popen("/bin/ls -al", "r"); if (fp == NULL) exit(1); while (fgets(output, 1023, fp) != NULL) printf("%s", output); pclose(fp); return 0; } 

您可以使用Baris Demiray 回答的/bin/ls上的popen(3) 。

但是在你的特殊情况下(把文件放在一个目录中),你并不需要启动一些运行ls外部进程,你可以简单地使用opendir(3)和readdir(3)来读取目录项,并使用stat (2)在他们每个人(你会使用snprintf(3)建立路径)。 另请参阅glob(7) , nftw(3)并阅读高级Linux编程

请注意, 系统(3)是一个名字很差的标准C库函数。 这不是一个直接的系统调用 (它们列在syscalls(2) …)中,而是使用fork(2) , execve(2) , waitpid(2)等等。