我想在我的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)等等。