【问题标题】:Calling multiple popen in c/c++在 C/C++ 中调用多个 popen
【发布时间】:2013-08-06 12:07:07
【问题描述】:

我正在使用 FreeBSD 和 C/C++ 来控制机器人。 这是问题:

我使用popen()在写模式下向计算机发出命令以控制机器人。所以现在我想获取命令的输出,所以我在阅读模式下创建另一个popen() 来获取它。

它会起作用吗?

我应该创建某种父子进程吗?

【问题讨论】:

    标签: c unix process freebsd popen


    【解决方案1】:

    所以现在我想获取命令的输出,所以我创建了另一个 popen() 在阅读模式下获取它。

    不行,使用popen(3) 创建一个额外的流是行不通的。然而,既然您使用的是 FreeBSD,那么您很幸运:在 FreeBSD 上,管道是双向的,所以 popen(3) 接受 r+ 参数。来自the manual

    由于popen() 现在是使用双向管道实现的,所以类型 参数可能请求双向数据流。类型参数是 指向以 null 结尾的字符串的指针,该字符串必须是 'r' 才能读取,'w' 用于写作,或 'r+' 用于阅读和写作

    因此,您可能只需从相同的FILE * 读取输出,例如fgets(3)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-27
      • 2019-07-12
      相关资源
      最近更新 更多