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

Can Bash receive parameters or return values from a C++ program?

本文关键字:参数 返回值 c++ 程序 Bash      更新时间:2023-10-16

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

一个元素看起来像:

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

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

(如。"print objectA - objectA有子对象吗? "- print children"…"

我已经习惯了"dialog"本身,但是在dialog/bash和c++程序之间是否有一个接口,以便dialog- gui可以与我的map交互?如果没有,有什么好的GUI替代方案吗?

我已经看到了一种从c程序中运行bash(以及dialog)的方法,但是他们没有讨论彼此之间的接口。

亲切的问候

我想到了两种可能性:

c++程序运行一次,并产生一个输出文件,bash脚本将获取并处理该文件。正如您所说,这似乎是工作量的两倍,c++正在解析生成一些bash随后需要解析的东西,这实际上与一般脚本哲学相当一致:将特定工具(grep, sort, tail, sed…)链接在一起以实现一些更大的目标。我们将困难的工作委托给一些专门的程序,并生成bash可以轻松使用的格式良好的结果。这意味着您可以调整c++输出,以便在bash中真正容易解析。

另一种选择是让c++程序在后台作为服务有效地运行。在最一般的情况下,它可以是Web服务或REST服务。因此,您的UI只是向服务发出(例如)HTTP请求并使用答案。我认为使用命名管道你可以更简单地与后台进程进行交互,但是自从印度用bash这样做以来已经很多年了,所以我不知道它对UI是否实用。

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