我目前正在阅读带有匿名管道的进程的输出,并且很好奇将所有输出合并到一个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
}