我正在使用 FreeBSD 和 C/C++ 来控制机器人。这是问题:
我使用popen()
写作模式向计算机发出命令以控制机器人。所以现在我想获取命令的输出,所以我popen()
在阅读模式下创建另一个来获取它。
它会起作用吗?
我应该创建某种父子进程吗?
所以现在我想获取命令的输出,所以我在阅读模式下创建了另一个 popen() 来获取它。
不,使用创建一个额外的流是popen(3)
行不通的。但是,由于您使用的是 FreeBSD,因此您很幸运:在 FreeBSD 上,管道是双向的,因此popen(3)
接受一个r+
参数。从手册:
由于
popen()
现在使用双向管道实现,因此 type 参数可以请求双向数据流。 type 参数是指向以 null 结尾的字符串的指针,该字符串必须是 'r' 读取,'w' 写入,或'r+'用于阅读和写作。
因此,您可能会通过简单地读取相同的输出而侥幸逃脱,FILE *
例如fgets(3)
.