如何在Linux中创建可编写脚本的应用程序
我在C中编写了一个应用程序,它采用复杂的二进制文件格式并将其转换为人类可读的文本.编辑完文本后,您可以将其重新编译为二进制文件格式.
如果应用程序的内部对象模型是可编写脚本的,那么这将更有用.在Windows上我会使用COM或.Net公开对象,但我希望这可以在Linux上运行.我可以嵌入脚本语言,但这是一项相当多的工作,并限制用户使用我选择的脚本语言.理想情况下,我正在寻找一种从我的应用程序中暴露可编写脚本的DOM的方法: >广泛支持脚本语言(无需编写特定于语言的包装器) 更详细一点:我希望找到一种能为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.能够传递多个图像以立即转换,即使它没有使处理更快. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux kernel update
- 哪个是selinux源代码?
- linux创建一个和root用户一样权限的子用户
- linux – 当我重新启动Ubuntu服务器时如何重新启动sphinx?
- linux无界面模式安装selenium+chrome+chromedriver并成功完
- Kerberos+LDAP+NFSv4 实现单点登录(中)
- linux – Git:索引文件打开失败:权限被拒绝在“git状态”
- linux – 透明地冻结和解冻进程?
- 来自Linux内核模块中fd inode的可执行路径
- Find command usage in Linux with excellent examples--re