arch linux autostart 在 tty1 出现之前用 c++ 编写的启动时交互程序

arch linux autostart 在 tty1 出现之前用 c++ 编写的启动时交互程序

我尝试在 TTY1 出现之前在启动时自动启动一个交互式 C++ 程序。

我创建了一个名为的文件,/etc/systemd/system/myapp.service其内容如下:

[Unit]
Description=myapp

[Service]
Type=oneshot
ExecStart=/home/xxx/myapp.exe start
StandardOutput=tty
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

然后跑了

sudo systemctl enable myapp

不幸的是,它没有按预期工作。我无法与 交互myapp,并且我不希望 TTY1 在程序结束前出现


更新:我的应用程序现在可以在 TTY 出现之前运行。 /etc/systemd/system/myapp.service现在包含:

[Unit]
Description=myapp
After=sysinit.target

[Service]
Type=oneshot
StandardOutput=tty
RemainAfterExit=yes
ExecStart=/home/xxx/myapp.exe start

[Install]
WantedBy=multi-user.target

但我仍然无法与我的程序交互。

答案1

我能够通过StandardInput向 systemd 服务添加 TTY 线路并禁用 TTY1 systemd 服务来与我的程序进行交互。

以下是的最终内容/etc/systemd/system/myapp.service

[Unit]
Description=myapp
After=sysinit.target

[Service]
Type=oneshot
StandardInput=tty
StandardOutput=tty
RemainAfterExit=yes
ExecStart=/home/xxx/myapp.exe start

[Install]
WantedBy=multi-user.target

以下是禁用 TTY1 systemd 服务的命令:

sudo systemctl disable [email protected]

现在,该程序以交互方式出现在 TTY1 上。

相关内容