#bindings #libsystemd #systemd #interface #journal #set #api

sys libsystemd-sys

libsystemd 和 libelogind 的 FFI 绑定

20 个版本

0.9.3 2021 年 12 月 10 日
0.9.0 2021 年 6 月 3 日
0.8.0 2020 年 11 月 10 日
0.2.2 2018 年 10 月 24 日
0.0.1 2015 年 2 月 27 日

#791 in Unix API

Download history 3213/week @ 2024-04-23 3802/week @ 2024-04-30 3182/week @ 2024-05-07 4379/week @ 2024-05-14 3628/week @ 2024-05-21 3275/week @ 2024-05-28 3020/week @ 2024-06-04 3632/week @ 2024-06-11 3457/week @ 2024-06-18 4126/week @ 2024-06-25 3919/week @ 2024-07-02 4188/week @ 2024-07-09 4893/week @ 2024-07-16 4077/week @ 2024-07-23 5297/week @ 2024-07-30 4856/week @ 2024-08-06

19,906 每月下载量
用于 14 个 crate (3 个直接)

LGPL-2.1-or-later WITH GCC-exception-2.0

68KB
1.5K SLoC

rust-systemd

crate 文档 (systemd) crate 文档 (libsystemd-sys) Crates.io 构建状态

Cargo.toml

[dependencies]
systemd = "0.9"

构建环境变量

默认情况下,libsystemd-sys 将使用 pkg-config 来查找 libsystemd。它默认使用 libsystemd 包。要更改 pkg-config 中查找的包,请设置环境变量 SYSTEMD_PKG_NAME

如果您想直接覆盖 libsystemd 的源,请设置环境变量 SYSTEMD_LIB_DIR 为包含要链接的 libsystemd 的路径。可选地,您也可以设置 SYSTEMD_LIBS 来指定要链接的库。变量 SYSTEMD_LIBS 中的库用冒号 (:) 分隔,并可能包含一个 KIND。例如:SYSTEMD_LIBS="static=foo:bar"

elogind 支持

可以设置 SYSTEMD_PKG_NAME=libelogind(pkg-config 文件名)或同时设置 SYSTEMD_LIBS=elogind 并将 SYSTEMD_LIB_DIR 设置为相应的目录。

当使用 elogind 时,用于 journalbus 功能的 API 可能不完全可用(elogind 是从较旧的 systemd 版本分叉出来的,可能缺少一些这些 API)。如果您的应用程序不需要这些功能,可以在不包含默认功能的情况下依赖 systemd 以允许最大兼容性。

[dependencies]
systemd = { version = "0.9", default-features = false }

请注意,仍然可能缺少一些符号。如果您发现链接错误,请报告它,以便我们可以调整 systemd crate 以支持它。

journal

支持日志发送,systemd::journal::Journal 是围绕读取 API 的(功能较低)包装器。

journal 写入 API 的示例

use log::warn;
use systemd::{journal, sd_journal_log};

fn main() {
   use systemd::journal;
   journal::print(1, &format!("Rust can talk to the journal: {:?}",
                             4));
   journal::send(["CODE_FILE=HI", "CODE_LINE=1213", "CODE_FUNCTION=LIES"]);
   journal::JournalLog::init().unwrap();
   warn!("HI");
   sd_journal_log!(4, "HI {:?}", 2);
}

守护进程

守护进程 API 主要提供在套接字激活时由 systemd 传递给进程的原始文件描述符的工具。由于原始文件描述符在 Rust 中支持不佳,这些函数可能主要用于管理程序流程;实际的套接字代码将必须使用 libc crate。

许可证

此库是免费软件;您可以在自由软件基金会发布的 GNU 较小通用公共许可证的条款下重新分发和/或修改它;许可证版本 2.1,或者(根据您的选择)任何较新版本。

除 GNU 较小通用公共许可证中的权限外,作者还授予您无限制地将此库编译版本链接到其他程序组合中的权限,并且可以无任何限制地分发这些程序。(较小通用公共许可证的限制在其他方面适用;例如,它们涵盖了修改库和当未链接到其他程序时的分发。)

此库的发行是为了希望它会是有用的,但没有任何保证;甚至没有关于适销性和针对特定目的适合性的暗示性保证。有关更多详情,请参阅 GNU 较小通用公共许可证。

贡献

除非您明确声明,否则您提交的任何有意包含在作品中并由您提供的贡献都应按上述方式许可,不附加任何额外条款或条件。

依赖关系