arch linux autostart交互式程序在tty1出现之前用c ++编写


1

我试图在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

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

Answers:


2

通过添加TTY,我能够与我的程序进行交互 StandardInput 连接到systemd服务,并禁用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 getty@tty1.service

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.