在c / c ++中调用多个popen

时间:2013-08-06 12:07:07

标签: c unix process freebsd popen

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

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

会起作用吗?

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

1 个答案:

答案 0 :(得分:1)

  

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

不,使用popen(3)创建其他流将无效。但是,由于你使用FreeBSD,你很幸运:在FreeBSD管道上是双向的,所以 popen(3)接受r+参数。来自the manual

  

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

因此,您可能只需阅读同一FILE *的输出,就像fgets(3)一样。