📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == サービスとは、PCの起動時に自動的に実行され、バックグラウンドで仕事をするために待機するソフトウェアのことである。<br> <br> 一般的に、サービスはグラフィカルユーザインターフェースを持たず、ユーザの操作無しに動作する。<br> 最もよく知られているサービスは、Web、メール、データベース等のサーバで、Apache、MySQL等がある。<br…」 |
細 文字列「__FORCETOC__」を「{{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This pag… |
||
| (同じ利用者による、間の7版が非表示) | |||
| 34行目: | 34行目: | ||
== Systemdライブラリのインストール == | == Systemdライブラリのインストール == | ||
==== ライセンス ==== | ==== ライセンス ==== | ||
Systemdライブラリのライセンスは、LGPL | Systemdライブラリのライセンスは、LGPL 2.1以降、または、 GPL 2.0で利用可能である。<br> | ||
<br> | <br> | ||
==== パッケージ管理システムからインストール ==== | ==== パッケージ管理システムからインストール ==== | ||
# RHEL | # RHEL | ||
| 44行目: | 45行目: | ||
<br> | <br> | ||
==== ソースコードからインストール ==== | ==== ソースコードからインストール ==== | ||
Systemdのビルドに必要なライブラリをインストールする。<br> | |||
sudo zypper install meson ninja python3-Jinja2 glib2-devel dbus-1-devel p11-kit-devel libarchive-devel pcre2-devel libcurl-devel libcap-devel \ | |||
libmount-devel libfdisk-devel libblkid-devel libdw-devel libpwquality-devel passwdqc-devel libkmod-devel libbpf-devel \ | |||
zlib-devel liblz4-devel libzstd-devel xz-devel libbz2-devel \ | |||
pam-devel libgnutls-devel libopenssl-devel libopenssl-1_1-devel libcryptsetup-devel libgcrypt-devel libgpg-error-devel \ | |||
qrencode-devel libiptc-devel libidn2-devel libmicrohttpd-devel \ | |||
libxkbcommon-devel libfido2-devel tpm2-0-tss-devel libseccomp-devel libacl-devel audit-devel \ | |||
libapparmor-devel # AppArmorを使用する場合 | |||
libselinux-devel # SELinuxを使用する場合 | |||
xen-devel # Xenを使用する場合 | |||
<br> | |||
[https://github.com/systemd/systemd SystemdのGithub]にアクセスして、ソースコードをダウンロードする。<br> | [https://github.com/systemd/systemd SystemdのGithub]にアクセスして、ソースコードをダウンロードする。<br> | ||
ダウンロードしたファイルを解凍する。<br> | ダウンロードしたファイルを解凍する。<br> | ||
| 50行目: | 62行目: | ||
<br> | <br> | ||
Systemdをビルドおよびインストールする。<br> | Systemdをビルドおよびインストールする。<br> | ||
meson --prefix=<Systemdのインストールディレクトリ> -Dmode=release build | |||
ninja -C ./build -j $(nproc) | |||
ninja -C ./build install | |||
<br><br> | <br><br> | ||
== サンプルコード == | == サンプルコード == | ||
<code>QProcess</code> | <code>QProcess</code>クラスを使用せずに、Systemdを利用してSSHデーモンを起動する場合は、Systemdのライブラリを使用する必要がある。<br> | ||
<br> | <br> | ||
以下の例では、Systemdのライブラリを使用してSSHデーモンを起動している。<br> | 以下の例では、Systemdのライブラリを使用してSSHデーモンを起動している。<br> | ||
# <code> | # <code>sd_bus_open_system</code>関数を使用して、システムバスへの接続を開く。 | ||
#: | #: 戻り値が負の値の場合は、接続に失敗したことを示す。 | ||
# | # <code>sd_bus_call_method</code>関数を使用して、SystemdのD-Busインターフェイスを介してsshd.serviceを起動する。 | ||
#: 関数の引数には、バスの接続、D-Busサービス名、D-Busオブジェクトのパス名、インターフェイス名、メソッド名、入力引数、出力引数、起動するサービス名とモードを指定する。 | |||
#: 戻り値が負の値の場合は、サービスの起動に失敗したことを示す。 | |||
#: | #: サービスの起動に成功した場合は、成功メッセージをデバッグ出力に表示している。 | ||
#: | # <code>sd_bus_unref</code>関数を使用して、バスの接続を閉じる。 | ||
#: | |||
# | |||
<br> | <br> | ||
このサンプルコードを実行するには、Systemdライブラリがインストールされている必要がある。<br> | |||
また、適切な権限でプログラムを実行する必要がある。<br> | また、適切な権限でプログラムを実行する必要がある。<br> | ||
<br> | <br> | ||
<u>※注意</u><br> | <u>※注意</u><br> | ||
<u>この方法は、Systemdが利用可能なシステムでのみ動作する。</u><br> | <u>この方法は、Systemdが利用可能なシステムでのみ動作する。</u><br> | ||
<br> | |||
* QMakeを使用する場合 | |||
<syntaxhighlight lang="make"> | |||
# .proファイル | |||
CONFIG += link_pkgconfig | |||
PKGCONFIG += libsystemd | |||
</syntaxhighlight> | |||
<br> | |||
* CMakeを使用する場合 | |||
<syntaxhighlight lang="cmake"> | |||
# Package Configの使用 | |||
find_package(PkgConfig REQUIRED) | |||
# Systemdライブラリの使用 | |||
pkg_check_modules(SYSTEMD REQUIRED libsystemd) | |||
## Systemdライブラリのバージョンを指定する場合 | |||
#pkg_check_modules(SYSTEMD REQUIRED libsystemd >= <バージョン>) | |||
target_include_directories(<your_target> PUBLIC | |||
# ...略 | |||
${SYSTEMD_INCLUDE_DIRS} | |||
) | |||
target_link_libraries(<your_target> | |||
# ...略 | |||
${SYSTEMD_LIBRARIES} | |||
) | |||
</syntaxhighlight> | |||
<br> | <br> | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
#include <QCoreApplication> | #include <QCoreApplication> | ||
#include <QDebug> | #include <QDebug> | ||
#include <systemd/sd- | #include <systemd/sd-bus.h> | ||
int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||
| 86行目: | 124行目: | ||
QCoreApplication a(argc, argv); | QCoreApplication a(argc, argv); | ||
// | // Systemdを使用してSSHデーモンを起動 | ||
int ret = | sd_bus *bus = nullptr; | ||
if (ret = | int ret = sd_bus_open_system(&bus); | ||
qDebug() << " | if (ret < 0) { | ||
qDebug() << QString("システムD-Busの接続に失敗: %1").arg(strerror(-ret)); | |||
return -1; | |||
} | |||
ret = sd_bus_call_method(bus, | |||
"org.freedesktop.systemd1", | |||
"/org/freedesktop/systemd1", | |||
"org.freedesktop.systemd1.Manager", | |||
"StartUnit", | |||
nullptr, | |||
nullptr, | |||
"ss", | |||
"sshd.service", | |||
"replace"); | |||
if (ret < 0) { | |||
qDebug() << QString("SSHサービスの開始に失敗: %1").arg(strerror(-ret)); | |||
sd_bus_unref(bus); | |||
return -1; | return -1; | ||
} | } | ||
qDebug() << "SSHサービスの開始に成功"; | |||
sd_bus_unref(bus); | |||
return a.exec(); | return a.exec(); | ||
| 110行目: | 158行目: | ||
<br><br> | <br><br> | ||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Qt]] | [[カテゴリ:Qt]] | ||