systemctl이 호출될 때 내 텔넷 서버 소프트웨어가 문자를 올바르게 보낼 수 없습니다.

systemctl이 호출될 때 내 텔넷 서버 소프트웨어가 문자를 올바르게 보낼 수 없습니다.

소켓 기반 BBS 패키지를 작성했습니다. /usr/local/bin/coderunner 명령줄에서 바이너리를 실행하면 클라이언트 세션에서 상위 문자가 올바르게 표시됩니다. 그러나 systemctl start coderunner를 실행하면 모든 상위 문자가 "?"로 나타납니다.

나는 컴파일러 작성자와 이야기를 나눴으며 유일하게 이해 가능한 제안은 systemctl이 어떤 방식으로든 문자열 라이브러리에 영향을 미치는지 여부입니다. $LOCALE, $LANG을 표시해 보았습니다. 아무런 차이가 없습니다.

Wireshark/tcpdump를 다시 CLI에서 수동으로 실행했는데 CP437 그래픽 문자가 표시되고 systemctl에서 실행하면 출력 스트림에 "?"가 표시됩니다.

  • 또 다른 이상한 부작용은 이것이 약 2주 전에 시작되었다는 것입니다. 그 전에는 아무런 문제 없이 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

관련 정보