代码之家  ›  专栏  ›  技术社区  ›  Steven Lu

如何在windows中的bash中在进程之间传输大量数据?

  •  0
  • Steven Lu  · 技术社区  · 8 年前

    这通常是通过管道实现的。管 在我一直测试的环境中工作良好(并在其中完成了大量工作!)在Windows 10中,具体来说:

    • Git bash
    • MSYS2 bash

    cat largefile.JPG | wc -c ),但每当我用C++编写自己的图像处理程序时,无论我用什么方法读取标准输入法(无论是否使用 cstdio cin iostreams)在流结束之前,我只看到流的一小部分。它的长度似乎是确定的,因此同一个文件会产生相同的结果。

    在OS X或Linux上测试相同的代码显然可以正常工作,其中stdin流的长度是正确的。因此,在这些平台上,这是一种实用的方法,可以在不撞击磁盘的情况下传递数据。我已经磨练了十年的bash-fu,所以它很自然。

    当然,我必须有其他可以利用的方法,但我真的不能很快想出我可以依赖的东西。我可以在这里尝试解决哪些问题?我真的很喜欢可以在MSYS2中使用pacman安装的unix工具集,包括

    g++.exe (Rev2, Built by MSYS2 project) 7.1.0
    Copyright (C) 2017 Free Software Foundation, Inc.
    

    wc 工作完美吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Mark Setchell    8 年前

    图形标记

    因此,一个64kB的文件中包含了十六进制27:

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

    或者,一个32kB的零PGM文件:

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

    0x0 0xff

    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  /0123456789:;<=>
    00000040: 3f40 4142 4344 4546 4748 494a 4b4c 4d4e  ?@ABCDEFGHIJKLMN
    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  ................
    
        2
  •  0
  •   Steven Lu    8 年前

    Ctrl+Z在Windows中发出EOF信号,我没有意识到这一点。