【问题标题】:reading standard output via read function instead of fread通过 read 函数而不是 fread 读取标准输出
【发布时间】:2013-07-31 09:22:49
【问题描述】:

我希望我的程序读取另一个应用程序生成的标准输出。我知道我可以使用popen 来执行此操作并使用fread 来读取该输出。

你知道是否可以使用read(可能还有open)吗?我正在使用 C/C++ 在 LINUX 中工作

【问题讨论】:

  • 用你的shell$./program1 | ./program2怎么样,这将progam1的stdout连接到program2的stdin。
  • 如果你使用不需要打开的管道,只需读取(pipe[], buffer, len)
  • 你为什么不想使用popen
  • @Jan. ..更好地阅读我的问题,你是对的。使用 popen 没问题(也因为我可以提供我想要运行的 caommand 和 args),但我更喜欢使用 open 而不是 fread。

标签: c++ c linux pipe


【解决方案1】:

您可以通过调用int fd = fileno(fp) 来获取read() 的文件描述符,以获取您从popen() 获得的FILE *fp。但请注意,您不能混合调用read()fread()

编辑

如果你想避免popen(),你必须使用pipe()fork()exec..()dup2()就像它已经完成了here

【讨论】:

  • 好东西!非常感谢。
猜你喜欢
  • 1970-01-01
  • 2010-10-17
  • 2018-03-05
  • 1970-01-01
  • 2015-01-31
  • 2013-06-29
  • 1970-01-01
  • 2012-09-07
  • 2011-12-05
相关资源
最近更新 更多