抓住stdout和stderr命令

时间:2014-11-13 16:45:36

标签: c stream pipe stdout stderr

我需要为命令获取stderr流和stdout流,但我只知道如何重定向命令的stdout流。

假设我有这样的功能:

int getcmd(cmd, buf, max, len)
    const char *buf;
    char *buf;
    size_t max;
    size_t *len;
{
if (!cmd || !buf)
    return 1;
FILE *stream;
if ((stream = popen(cmd, "r")) == NULL)
    return 1;

size_t length;
while (fgets(buf, max, stream) == buf) {
    length = strlen(buf);
    buf = &buf[length];
    if (len)
        *len += length;
    max -= length;
}
if (*(buf - sizeof(char)) == '\n')
    *(buf - sizeof(char)) = 0;
return pclose(stream);
}

此函数可以在没有任何技巧的情况下读取命令的标准输出并将其存储在变量中 我怎么能用stderr做同样的事?

0 个答案:

没有答案