0

我有两个程序:程序 A(在 FORTRAN 中)和程序 B(在 C++ 中)。它们通过管道相互连接。程序 B 应该直接从程序 A 的控制台读取二进制数据,但由于某种原因我不能这样做:

以下是程序B的阅读部分:

BOOL bSuccess = FALSE;
LPBYTE File_Data;
DWORD dwFileSize;
wFileSize = GetFileSize(V_hChildStd_OUT_Rd, NULL);
File_Data = new BYTE[dwFileSize+1];
bSuccess = ReadFile( V_hChildStd_OUT_Rd, File_Data, dwFileSize, &dwRead, NULL);
delete [] File_Data; 

注意:V_hChildStd_OUT_Rd 是程序 A 输出的句柄。

如果我传递一位、两位或三位整数(比如 1 或 10 或 100),则程序可以工作,我可以在 File_Data 数组中获得数字。但对于较大的整数和所有双数,File_Data 给出的意义较小。请注意,对于所有数字,我的 bSuccess 都是 TRUE!这意味着它可以读取文件。你能帮我解决这个问题吗?谢谢!

4

1 回答 1

2

您不能GetFileSize()与管道一起使用,只能与文件一起使用。要确定有多少数据可用于从管道读取,请PeekNamedPipe()改用。并注意dwRead输出值,它告诉您实际读取了多少字节,这可能小于您请求的字节数。

于 2013-03-29T00:27:48.847 回答