Bash可以从C ++程序接收参数或返回值吗?

时间:2014-07-28 06:37:58

标签: c++ bash user-interface interface dialog

我编写了这个解析器程序,它以std :: map的形式从多个文件(500多个条目)中返回一个很好的信息结构。

一个元素如下:

anObject -> Name [String]
            ID [Int]
            Children [list(anObject)]

现在我想将它们显示在GUI中。如您所见,1个对象可以包含更多对象。然后,通过迭代特定对象的子项来打印所有存在的对象。

(例如" print objectA - objectA有孩子吗? - 打印孩子" ...)

我已经和#34;对话"对于它自己,但是在dialog / bash和C ++程序之间是否有接口,以便对话框GUI可以与我的地图交互?如果没有GUI的任何好的替代品?

我已经看过一种从c程序运行bash(以及因此也是对话框)的方法,但他们并没有谈论彼此之间的接口。

亲切的问候

1 个答案:

答案 0 :(得分:1)

有两种可能性浮现在脑海中:

C ++程序运行一次并生成bash脚本选择并使用的输出文件。虽然,正如你所说,这似乎是工作的两倍,C ++解析产生了一些bash然后需要解析的东西,这实际上与一般的脚本哲学非常一致:将特定工具(grep,sort,tail,sed ......)链接在一起实现一些更大的目标。我们将硬件委托给一些专门的程序,并产生一个格式很好的结果,bash可以很容易地使用。这意味着您可能会调整C ++输出,以便在bash中轻松解析。

另一种方法是让C ++程序在后台有效地作为服务运行。在最常见的情况下,它可以是Web服务或REST服务。因此,您的UI只是向服务发出(说)HTTP请求并使用答案。我认为使用命名管道可以更简单地与后台进程进行交互,但是自从使用bash进行Indid以来已经有好几年了,所以我不知道它是否适用于UI。

总的来说,我的感觉是,如果你真正的目标是制作一个漂亮的用户界面,那么bash不是最好的工具,PHP或任何网络应用程序构建工具可能更容易。但是,如果学习bash是目标,那么探索命名管道可能很有趣。