2017-09-15 76 views
0

這通常用管道完成。 似乎管道在我測試(!並獲得了大量的工作中完成的),在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爲什麼完美?

+1

請顯示您最簡單,可編譯,可運行的程序,該程序無法讀取所有'stdin'以及如何運行它。 –

+0

我使用[this](https://stackoverflow.com/a/3495410/340947)代碼,並像這樣運行:'cat large.JPG | 。/ size'。它是用'gcc size.c -o size'編譯的。 –

+0

你看過https://github.com/borgbackup/borg/pull/2032嗎? – zortacon

回答

0

Ctrl + Z在Windows中發出EOF信號,我不知道這一點。

感謝Alf對此解答發表評論。如果您發佈了答案,我會切換接受。

1

不是一個真正的答案,只是爲了幫助做出來一個提示...

正如你已經有GraphicsMagick工具,可以非常方便的進行測試創建任意長度和內容文件。

所以,一個64KB文件已滿十六進制27:

gm convert -depth 8 -size 64x1024 xc:"#272727" gray:- | wc -c 

或者零的32KB的PGM文件:

gm convert -depth 8 -size 32x1024 xc:"#000" PGM:- 

或者,用0x00xff之間的所有十六進制值的文件:

gm convert -depth 8 -size 1x256 gradient:black-white gray:- | xxd 

00000000: 0000 0102 0304 0506 0708 090a 0b0c 0d0e ................ 
00000010: 0f10 1112 1314 1516 1718 191a 1b1c 1d1e ................ 
00000020: 1f20 2122 2324 2526 2728 292a 2b2c 2d2e . !"#$%&'()*+,-. 
00000030: 2f30 3132 3334 3536 3738 393a 3b3c 3d3e /:;<=> 
00000040: 3f40 4142 4344 4546 4748 494a 4b4c 4d4e [email protected] 
00000050: 4f50 5152 5354 5556 5758 595a 5b5c 5d5e OPQRSTUVWXYZ[\]^ 
00000060: 5f60 6162 6364 6566 6768 696a 6b6c 6d6e _`abcdefghijklmn 
00000070: 6f70 7172 7374 7576 7778 797a 7b7c 7d7e opqrstuvwxyz{|}~ 
00000080: 7f80 8182 8384 8586 8788 898a 8b8c 8d8e ................ 
00000090: 8f90 9192 9394 9596 9798 999a 9b9c 9d9e ................ 
000000a0: 9fa0 a1a2 a3a4 a5a6 a7a8 a9aa abac adae ................ 
000000b0: afb0 b1b2 b3b4 b5b6 b7b8 b9ba bbbc bdbe ................ 
000000c0: bfc0 c1c2 c3c4 c5c6 c7c8 c9ca cbcc cdce ................ 
000000d0: cfd0 d1d2 d3d4 d5d6 d7d8 d9da dbdc ddde ................ 
000000e0: dfe0 e1e2 e3e4 e5e6 e7e8 e9ea ebec edee ................ 
000000f0: eff0 f1f2 f3f4 f5f6 f7f8 f9fa fbfc fdfe ................ 
相關問題