日期:2014-05-16  浏览次数:20759 次

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,大家说应该这么做啊???,还有我这个代码为啥不好用呢????
linux 终端 c

------解决方案--------------------
fp=popen("ls -al 
------解决方案--------------------
 grep ma.txt", "r");
再把数据读出来fread(buff, 1, 255, fp)
------解决方案--------------------
我觉得还可以更进一部,用“opendir读取目录,并过滤文件”代替popen执行Shell命令。