【Rust日报】2019-10-01 - Shawl: 一个能够将一切应用程序运行为Windows服务

本文介绍了Shawl,一个用Rust编写的工具,可将任何程序作为Windows服务运行,处理服务API。此外,还探讨了Rust中的动态加载插件技术,Rust构建RISC-V操作系统的教程,Cargo的安全问题以及使用Rust构建Azure IoT Edge安全防护程序的实践。同时提到了Cyclone对安全编程的影响和日本的Rust实习机会。
摘要由CSDN通过智能技术生成
Shawl: 将一切应用程序运行为Windows服务

Shawl是一个用Rust编写的能够将任何程序作为Windows服务运行的包装程序。它可以处理Windows服务的API,因此您原本的程序只需要响应ctrl-C 或者SIGINT。创建需要作为服务来运行的项目,只需将Shawl与您的项目捆绑在一起,将其设置为入口点,然后通过CLI传递指令来运行。

了解更多:crates.io GitHub

Rust中的插件

Rust语言为我们提供了许多非常强大的工具,为应用程序提升了灵活性和可扩展性(例如特征、枚举、宏等),但是所有这些都是在编译时完成的。但是为了获得我们所希望的灵活性,我们希望能够在运行时添加新功能。

这可以使用一个称为动态加载的技术来实现。

何为动态加载?

动态加载是所有主流操作系统提供的一种可以在运行时加载库的机制,以便用户检索函数或变量的地址。然后可以像使用其他任何指针一样使用这些函数和变量的地址。

在* nix平台上,dlopen()函数用于将库加载到内存中,然后dlsym()能够让您通过其符号名称获取指向某变量的指针。需要记住的一点是,符号不包含任何类型信息,因此调用者必须将指针转换为正确的类型。

通常,通过与某种类型的协定提前完成加载库来完成.例如,头文件需要声明"cos"函数为 fn(f64) -> f64.

来自man dlopen的示例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值