我正在使用FreeBSD和C / C ++来控制机器人。 这是问题所在:
我在写入模式下使用popen()
将命令发送给计算机以控制机器人。所以现在我想得到命令的输出,所以我在阅读模式下创建另一个popen()
来获得它。
会起作用吗?
我应该创建某种父子进程吗?
答案 0 :(得分:1)
所以现在我想得到命令的输出,所以我创建另一个 popen()在阅读模式下得到它。
不,使用popen(3)
创建其他流将无效。但是,由于你使用FreeBSD,你很幸运:在FreeBSD管道上是双向的,所以 popen(3)
接受r+
参数。来自the manual:
由于
popen()
现在使用双向管道实现,因此类型 参数可以请求双向数据流。类型参数是a 指向以null结尾的字符串的指针,该字符串必须为'r'才能读取,'w' 用于写作,或'r +'用于阅读和写作。
因此,您可能只需阅读同一FILE *
的输出,就像fgets(3)
一样。