是否有一个c ++库提供执行外部程序和读取其输出的功能?

时间:2010-04-11 17:09:43

标签: c++ posix

基本上,我正在寻找能够复制以下Perl代码的东西:

my $fh = new FileHandle;
$fh->open("foo |");
while (<$fh>) {
    # Do something with this line of data.
}

这是在Linux的上下文中,因此特定于Windows的库将无济于事。我知道如何编写一个执行fork / exec / dup2的程序以及所有基本的shell类型爵士乐,但是有一些涉及终端的细节,我不喜欢乱搞(而且我没有副本) “UNIX环境中的高级编程”或类似的参考手册),所以我希望有人已经解决了这个问题。

2 个答案:

答案 0 :(得分:5)

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(int argc, char* argv[])
{
    char c;
    FILE* p;

    p = popen("echo hello, world!", "r");
    if( p == NULL ) {
        fprintf(stderr, "Failed to execute shell with \"echo hello, world!\"");
        exit(1);
    }
    while( (c = fgetc(p)) != EOF ) {
        fputc(toupper(c), stdout);
    }
    pclose(p);
    return EXIT_SUCCESS;
}

答案 1 :(得分:2)

也许popen是您的解决方案?