linux 终端中输入指令 "ls",并将显示的结果存入程序中的疑问
先贴下代码(在当前文件目录下)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char buff[255];
memset(buff, 0x00 255);
system("ls -al | grep ma.txt");
read(1, buff 255); //1代表stdout,将结果输入buff中
printf("buffer=[%s]\n",buff);
return 0;
}
这段代码我就是想把ls的执行结果存入程序中的buff里面,完后留着也后用,这是我想的实现方法,但是不好用
在read的时候就一直阻塞住了,我也想过其他的方法,就是把ls命令重定向到文件中,然后程序读此文件,但是这么做感觉有点2,大家说应该这么做啊???,还有我这个代码为啥不好用呢????
------解决方案--------------------fp=popen("ls -al
------解决方案-------------------- grep ma.txt", "r");
再把数据读出来fread(buff, 1, 255, fp)
------解决方案--------------------我觉得还可以更进一部,用“opendir读取目录,并过滤文件”代替popen执行Shell命令。