【发布时间】:2012-09-12 12:30:00
【问题描述】:
我使用我的 C 程序将二进制数据流式传输到 ImageMagick:
inbuf = popen(string, "wb");
setbuf(inbuf, NULL); /// !!! ///
fwrite(buffer, frame, 1, inbuf);
pclose(inbuf);
而且 ImageMagick 并不总是在 windows (mingw) 上接收所有数据。如果没有 setbuf 命令(禁用缓冲),它接收的数据会更少,并且在 Linux (gcc) 上也会出现问题。
当我将相同的缓冲区转储到文件时,一切正常,所有数据都写入磁盘,我什至不必禁用缓冲:
outbuf = fopen("temp\\tune.gray", "wb");
fwrite(buffer, frame, 1, outbuf);
fclose(outbuf);
我发现当我发送奇数字节时会出现问题:) 当我发送偶数时一切正常。我尝试不以批量模式写入数据,而是将缓冲区拆分为更小的部分,甚至尝试逐字节发送数据 - 它没有帮助。有什么想法吗?
【问题讨论】:
标签: c imagemagick mingw stdin popen