经过三天的密集的googleing和stackoverflowing我或多或less让我的程序工作。 我尝试了很多东西,发现很多答案连接到我的问题,但没有工作的解决scheme。 Sry应该错过了正确的页面! 我期待意见和build议。
任务:
整个事情在testing数据的ubuntu上工作得很好。 在Windows上,我遇到了二进制stream问题:Windows检查浮动stream为EOF字符,并随机find它。 然后,一切都冻结,等待在“eof”墙后面的stream量数据。 或者我可以拍照。
最后,这两件事情是必要的:
#include <io.h> #include <fcntl.h>
和
if (_setmode(_fileno(stdin), _O_BINARY) == -1) {cout << "binary mode problem" << endl; return 1;};
在C ++中描述: https : //msdn.microsoft.com/en-us/library/aa298581%28v=vs.60%29.aspx 。
在Python代码中也是一样的! (先忘了,花一天吧):
if sys.platform.find("win") > -1: import msvcrt,os process = subprocess.Popen("cprogram.exe",stdin=subprocess.PIPE,stdout=subprocess.PIPE,bufsize=2**12) msvcrt.setmode(process.stdin.fileno(), os.O_BINARY)
和
process.stdin.write(data.tostring())