如何读取系统输出('ls')?

时间:2010-07-12 19:20:08

标签: c linux

我正在用c代码做一些文件IO。我的文件中有一个特定的模式。我可以通过shell命令cat abc.txt | grep abc | wc -l来验证这一点。当我使用System()执行相同的命令时,它会给出正确的输出,但我不知道如何将其输出变为变量并将其与我的c代码本身进行比较。

我尝试查看使用WEXITSTATUS()建议的手册页。这实际上返回执行状态而不是输出。

F1 !!

3 个答案:

答案 0 :(得分:7)

您不希望system(3)。试试popen(3)和朋友。

答案 1 :(得分:1)

grep和wc正在做的是读取STDIN文件句柄作为管道的一部分操作

答案 2 :(得分:0)

您可以尝试:

...
pid_t pid = fork();
if(pid == 0){
    int fd = open("output", O_RDWR | O_CREATE);
    close(1);
    (void) dup(fd);  // this will return 1
    system(your_cmd);
    // read output from fd
    // close fd
    // exit
}
else{
...

这会将输出从system()执行的命令重定向到您的“输出”文件。