1 个不稳定版本
0.1.0 | 2021年11月2日 |
---|
#37 在 #stop
120KB
2K SLoC
cross-platform-service
"cross-platform-service" 包允许您为 Windows、Linux 和 macOS 开发跨平台服务和服务管理器。它支持安装、删除、启动和停止。
在 Windows 上,API 通过使用 microsoft/windows-rs 包来调用,如果服务有特殊的 Windows 需要,也可以调用 Windows API 目录。
在 Linux 上,使用 D-Bus 与 systemd 进行通信。默认行为是在 "/etc/systemd/system" 路径下定义 systemd 服务单元。
入门
use std::fs::OpenOptions;
use std::io::Write;
use std::sync::Arc;
use std::sync::atomic::{AtomicBool, Ordering};
use std::time::Duration;
use service_manager_rs::service::start_service;
const SERVICE_NAME: &str = "MyCrPlSVC";
fn main() {
start_service(SERVICE_NAME, service_main);
}
fn service_main(running: Arc<AtomicBool>) {
// The following code will run service for a minute and check if service stopped every
// 100 milli-seconds
// Return from this function will stop service
for _ in 0..600 {
if !running.load(Ordering::Relaxed) {
// Write stopping service codes here
// In linux SIGTERM signal set running to false and in Windows service stop command
// will do the same
return;
}
std::thread::sleep(Duration::from_millis(100));
}
}
要在 Linux 上编译项目,需要 D-Bus 开发库,可以使用以下命令安装:
apt install libdbus-1-dev
示例
跨平台
Windows 服务
依赖项
~5–36MB
~641K SLoC