這通常用管道完成。 似乎管道在我測試(!並獲得了大量的工作中完成的),在Windows 10環境下正常工作,具體包括:如何在Windows中的bash進程之間傳輸大量數據?
- 的Git的bash
- MSYS2慶典
我發現如果我有一個大文件或二進制流,我可以準確地使用一些已安裝的工具(cat largefile.JPG | wc -c
),但每當我用C++編寫我自己的圖像處理程序時,無論使用什麼方法來讀取標準輸入(無論是用cstdio
老派的C方法,用C程序或用C++ iostreams)我得到的只有流的一小部分出現在它結束之前。它的長度似乎是確定性的,所以相同的文件產生相同的結果。
在OS X或Linux上測試相同的代碼顯然會導致stdin流的長度是正確的長度。因此,在這些平臺上實現這種傳輸數據而不碰到磁盤的實用方法。我一直在磨練我的bash-fu十年了,所以很自然。
當然其他方法必須存在,我可以利用,但我不能真正拿出一些我期望依賴的東西。有什麼事情可以嘗試在這裏排除故障?我真的很喜歡的一組Unix工具,我可以用裏面MSYS2吃豆子安裝,包括
g++.exe (Rev2, Built by MSYS2 project) 7.1.0
Copyright (C) 2017 Free Software Foundation, Inc.
但是,這是我的一個大絆腳石至今。我用這個編譯器編譯的最簡單的程序無法從標準輸入流中汲取大量有用的數據。這是爲什麼?如果它是操作系統的一些限制,或者是posix圖層以及所有這些黑魔法,那麼wc
爲什麼完美?
請顯示您最簡單,可編譯,可運行的程序,該程序無法讀取所有'stdin'以及如何運行它。 –
我使用[this](https://stackoverflow.com/a/3495410/340947)代碼,並像這樣運行:'cat large.JPG | 。/ size'。它是用'gcc size.c -o size'編譯的。 –
你看過https://github.com/borgbackup/borg/pull/2032嗎? – zortacon