我正在使用CreatePipe来创建句柄,然后在启动子进程时传递这些句柄。
子进程将二进制信息写入其标准输出,并将其重定向到我创建的管道中。
然而,当写入数字'10'时,事情变得混乱,我得到太多的输出字符 - 我假设这是因为流在文本模式下打开并且它自动添加了一个13. / p>
在Win32中是否有任何方法我可以从CreatePipe返回HANDLE并将流模式更改为二进制,就像我使用函数_setmode一样,如果我有一个FILE *?或者有没有办法将他的句柄翻译成文件*所以我可以使用_setmode? p>
示例代码:
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作为文本流有关。请给我一点时间来看看这个,我可能会回来删除整个帖子!