我写了一个基于socket的BBS包。如果我从命令行运行二进制文件: /usr/local/bin/coderunner 那么客户端会话会正确看到高位字符。但是,如果我运行 systemctl start coderunner,所有高位字符都会显示为“?”问号。
我已经与编译器的作者交谈过,如果 systemctl 以某种方式影响字符串库,那么唯一有意义的建议。我尝试显示 $LOCALE、$LANG ...我没有看到任何区别。
我已经运行了wireshark/tcpdump - 再次从CLI手动运行,我看到了CP437图形字符,并且在systemctl下运行时,我看到了“?”在输出流中。
- 另一个奇怪的副作用是,这大约是两周前开始的——在此之前,我一直在 systemctl 下运行,没有出现任何问题。我没有改变编译器。
关于如何解决这个问题有什么建议吗?
[Unit]
Description=The Modern Pascal Code Running Socket Server
After=network.target
[Service]
Type=simple
PIDFile=/run/coderunner2.pid
EnvironmentFile=-/etc/coderunner2.conf
ExecStartPre=/usr/bin/rm -f /run/coderunner2.pid
ExecStart=/usr/local/bin/coderunner2
##ExecStart=/usr/local/bin/coderunner2.sh
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
Restart=on-failure
RestartSec=42s
StandardOutput=null
[Install]
WantedBy=multi-user.target