【问题标题】:C++ (Qt), System command using memory buffers instead of redirectionC ++(Qt),使用内存缓冲区而不是重定向的系统命令
【发布时间】:2013-11-29 17:58:58
【问题描述】:

我想知道如何使用内存缓冲区作为 io 流到使用 Qt 的系统命令。

通常你会做一些伪代码,比如:

Exec Command(" command < inputfile > outputfile");

但我想在内存中完成整个操作。

我更喜欢类似的伪代码:

ByteArray input;
ByteArray output;
Exec Command("command name", &input, &output);

答案的具体参考、示例或链接会很棒。我想我只需要一个起点。

提前致谢。

【问题讨论】:

  • 去掉了 C 标签,因为 Qt 绝对不是 C。
  • 我认为这将是特定于外壳的,例如Bash 或 Csh。此外,假设最近写入了inputfile,并且您在写入后不久阅读了outputfile,两者都应该在操作系统磁盘缓存中,因此,有效地来自内存。综上所述,理想情况下,您应该避免一起shelling-out,并找到一个可以与命令执行相同操作的库。

标签: c++ qt memorystream buffering


【解决方案1】:

一种方法是创建内存映射的输入和输出文件,并在常规 shell 命令中指定输入和输出文件的完整路径 - 这样它就可以有效地在内存中。

您可以通过编程方式创建/访问它们,看看

Streaming from memory mapped files in Qt

【讨论】:

    【解决方案2】:

    我发现您可以使用“共享内存”空间并将其用作文件引用。获得文件引用后,您可以对其使用重定向。无论如何,这是一种解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 2014-10-21
      • 2021-11-04
      相关资源
      最近更新 更多