加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

如何在Linux中创建可编写脚本的应用程序

发布时间:2020-12-14 00:44:15 所属栏目:Linux 来源:网络整理
导读:我在C中编写了一个应用程序,它采用复杂的二进制文件格式并将其转换为人类可读的文本.编辑完文本后,您可以将其重新编译为二进制文件格式. 如果应用程序的内部对象模型是可编写脚本的,那么这将更有用.在Windows上我会使用COM或.Net公开对象,但我希望这可以在Li
我在C中编写了一个应用程序,它采用复杂的二进制文件格式并将其转换为人类可读的文本.编辑完文本后,您可以将其重新编译为二进制文件格式.

如果应用程序的内部对象模型是可编写脚本的,那么这将更有用.在Windows上我会使用COM或.Net公开对象,但我希望这可以在Linux上运行.我可以嵌入脚本语言,但这是一项相当多的工作,并限制用户使用我选择的脚本语言.理想情况下,我正在寻找一种从我的应用程序中暴露可编写脚本的DOM的方法:

>广泛支持脚本语言(无需编写特定于语言的包装器)
>跨平台(但Linux支持是最重要的)
>进程中(但这不是必需的)

更详细一点:我希望找到一种能为COM提供类似好处的解决方案.也就是说,一旦应用程序的内部对象通过COM公开,它们就可以被任何脚本语言操纵,就像JavaScript可以操作HTML DOM一样.对象和方法很容易被发现,许多IDE为您的对象提供自动命令完成.客户端的可用性很重要.

解决方法

通常的方法是公开一些CLI命令,并允许用户在用户编写的任何shell /脚本语言中使用它们;见f.e. imagemagick,它公开了许多命令,用于在格式之间转换图像并应用转换.这适用于任何操作系统.

这也适用于交互式程序,尽管很少见.您可以使用D-BUS接口(在GNOME和KDE中越来越受欢迎),尽管它更适用于处理事件或发送简单命令.您可能希望创建一个交互式或类似守护进程的程序,它暴露D-BUS(甚至简单的基于套接字/管道的)接口,以及一些包装发送命令的简单CLI调用,以便界面更简单.请参阅moc / mocp(“控制台播放器上的音乐”)或xmms2.这适用于任何操作系统,但通常需要一些时间来计算不同操作系统的实现细节.

不要害怕嵌入完整的语言. Lua或Guile等语言的设计使它们非常易于嵌入且非常强大.对一种这样的语言进行标准化并不总是坏事,因为这意味着用户之间的代码可重用性更高……而且只有当您计划用户将大量代码编写为插件时,语言才真正重要.

有一些方法可以使用特殊库将API公开给多种脚本语言.你可以阅读它们f.e.这里:Kross@Wikipedia.我对他们没有经验.

我假设你的程序将是闭源的…然后我可以看到的最后一个选项是暴露某种API / ABI接口,可以被用户的C程序使用(例如编译到动态库).这样,用户就可以为他们想要的任何语言制作包装器,而且他们可以使用普通的C编写代码以提高速度.这种解决方案可能难以移植,但它为您(和您的用户)提供了灵活性.

请注意,过度设计脚本化很容易:最好将编程结构留给外部语言,并且只提供与程序交互的简单方法.我见过程序为脚本语言添加了自己的循环功能,即使它们没有为用户添加任何值:f.e.能够传递多个图像以立即转换,即使它没有使处理更快.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读