Win32流句柄 - 更改为二进制模式

时间:2012-02-22 02:19:37

标签: c winapi pipe

我正在使用CreatePipe来创建句柄,然后在启动子进程时传递这些句柄。

子进程将二进制信息写入其标准输出,并将其重定向到我创建的管道中。

然而,当写入数字'10'时,事情变得混乱,我得到太多的输出字符 - 我假设这是因为流在文本模式下打开并且它自动添加了一个13. / p>

在Win32中是否有任何方法我可以从CreatePipe返回HANDLE并将流模式更改为二进制,就像我使用函数_setmode一样,如果我有一个FILE *?或者有没有办法将他的句柄翻译成文件*所以我可以使用_setmode?

示例代码:

HANDLE hOutputReadTmp,hInputWriteTmp;

SECURITY_ATTRIBUTES sa;

bool Binary = true;

// Set up the security attributes struct.
sa.nLength= sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;

if (!CreatePipe(&hInputRead,&hInputWriteTmp,&sa,0))
{
    Error = "Unable to Create Input Pipe";
    return false;
};

if (Binary == true) 
{
    //Put a magic something here to change the hInputRead stream to Binary.
    //_setmode(_fileno(hInputRead,_O_BINARY);
}

修改

这可能更多地与CHILD PROCESS写入stdout作为文本流有关。请给我一点时间来看看这个,我可能会回来删除整个帖子!

0 个答案:

没有答案