Win32 C ++正确读取管道输出到一个变量

时间:2014-12-27 06:49:54

标签: c++ winapi char named-pipes createprocess

我目前正在阅读带有匿名管道的进程的输出,并且很好奇将所有输出合并到一个char(或char *)变量的最佳方法或最佳实践。问题是我不确定来自管道的字节大小。

我正在考虑使用malloc和realloc,但这是最好的方法吗?或者我应该创建一个大小为avail的临时变量?以下是我在评论中进一步思考的内容。

// buf is char[1024]
PeekNamedPipe(hread_stdout, buf, 1023, &bread, &avail, NULL);

if (bread != 0)
{
    memset(buf, 0, sizeof(buf));
    if (avail > 1023)
    {
        while (bread >= 1023)
        {
            ReadFile(hread_stdout, buf, 1023, &bread, NULL);  //read the stdout pipe

            // char output or char* output
            // append contents of buf to output
            // **unsure end size of output

        }

0 个答案:

没有答案