-1

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

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

它会起作用吗?

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

4

1 回答 1

1

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

不,使用创建一个额外的流是popen(3)行不通的。但是,由于您使用的是 FreeBSD,因此您很幸运:在 FreeBSD 上,管道是双向的,因此popen(3)接受一个r+参数。从手册

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

因此,您可能会通过简单地读取相同的输出而侥幸逃脱,FILE *例如fgets(3).

于 2013-08-06T12:39:46.080 回答