【问题标题】:Is it possible to pipe HDF5 formated data?是否可以通过管道传输 HDF5 格式的数据?
【发布时间】:2015-09-18 23:27:52
【问题描述】:

是否可以将 HDF5 写入标准输出并从标准输入读取(通过H5::File file("/dev/stdout",H5F_ACC_RDONLY) 或其他方式)?


我想要的是让一个程序 foo 写入 HDF5 文件(例如,作为它的第一个参数)和另一个程序 bar 从 HDF5 文件中读取,然后代替

command_prompt> foo temp.h5
command_prompt> bar temp.h5
command_prompt> rm temp.h5

简单地说

command_prompt> foo - | bar -

程序foobar 将特殊文件名- 分别理解为stdoutstdin。为了编写这些程序,我想知道 1)这是否可能以及 2)我如何实现它,即分别传递给 H5Fcreate()H5Fopen() 的内容,以防文件名 = - .


我试过了,这似乎是不可能的(不是一个大惊喜)。 HDF5 只有H5Fcreate()H5Fopen()H5Freopen(),它们似乎都不支持对stdin/stdout 的I/O。

【问题讨论】:

  • 当然可以。 HDF5 只是一个数据源,与其他任何数据源一样。
  • @HighPerformanceMark ??所以呢?我认为这与我的问题无关。为了您的利益,我澄清了一点。
  • 我对您支持流媒体的尝试表示敬意——这非常有用。 如果您的 HDF5 库支持流式传输,它可能会提供类似 H5Ffdopen() 的东西,让您可以传递已经打开的 fd 或 FILE *。另一方面,如果他们只给你H5Fopen,很可能他们不支持它,并且很可能使用像/dev/stdin 这样的特殊文件名将不起作用。如果他们不支持,很可能是因为,正如另一个答案所指出的,他们希望能够在阅读或写作时四处寻找。
  • @RobertHarvey 不幸的是,这是错误的。 HDF5 是数据源,但不是流。
  • @Walter:只要有足够的编程工作量,任何数据源都可以转换为流。它可能缺少某些功能,您可能必须将输入限制在数据的特定部分,但这样做当然是可能的。

标签: hdf5


【解决方案1】:

我认为您不能将stdin 用作 hdf5 输入文件。库需要在标头内容和数据之间四处寻找,而stdin 无法做到这一点。

【讨论】:

  • 不,我不是 HDF5 专家。但如果可以从标准输入读取,我会感到非常惊讶。
猜你喜欢
  • 2014-08-17
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 2012-04-18
  • 2017-01-27
  • 1970-01-01
相关资源
最近更新 更多