2017-07-15 4 views
0

Ich mache einen Wrapper für eine minecraft Serverkonsole mit GoLang. Es verwendet os/exec zum Ausführen des Servers und process.StdoutPipe() für die Echtzeitausgabe vom Unterprozess.GoLang os/exec StdoutPipe mit Farben

Aber ich kann es nicht bekommen, um die Farben aus irgendeinem Grund anzuzeigen. Wenn ich den Server direkt vom Terminal aus starte, funktionieren Farben, aber es funktioniert überhaupt nicht, wenn ich es von GoLang aus starte.

Außerdem gibt es keine Farbcodes in den Protokolldateien, wenn ich es von GoLang aus starte. Aber es wird direkt vom Terminal ausgeführt, die Protokolldatei ist absolut mit Farbcodes durcheinander gebracht. Ich verstehe wirklich nicht, wie das passiert.

Gibt es eine Möglichkeit, das zu beheben?
Danke!

+1

sicherlich passiert, weil minecraft erkennt, dass die stdout keine echte Konsole ist, so dass es die Farbe streift, so dass Sie die Ausgabe in eine Datei ohne die Farben umleiten können. Ich bin mir nicht sicher, wie Sie vorgehen sollten, es sollte eine Option zum Definieren geben, oder ein env, das beim Aufruf des Minecraft-Programms gesetzt werden soll. –

Antwort

4

Die Art, dies zu beheben, besteht darin, Farben vom Minecraft-Server zu erzwingen. Es ist überhaupt kein Problem mit Ihrem Go-Programm. Befehlszeilenprogramme erkennen häufig, ob sie auf einem interaktiven Terminal ausgeführt werden, und deaktivieren bestimmte Funktionen (z. B. Farbausgabe, Paging usw.), wenn dies nicht der Fall ist Skript (wie es in Ihrem Fall tatsächlich ist).

Wenn der Minecraft-Server diese Option nicht besitzt, können Sie möglicherweise fool it into thinking it's running on an interactive terminal.

+0

Hallo @Flimzy, danke für die Antwort. Ich habe versucht, 'script' zu verwenden, aber aus irgendeinem Grund heißt es' bash: 5: command not found'. Das ist, wenn ich es natürlich von 'exec.Command' ausführe; Aber es funktioniert, wenn ich es direkt vom Terminal aus starte. Irgendeine Idee, warum das passiert? –

+1

Hiiii, eigentlich habe ich es funktioniert !!! : D. Nun, ich habe das, was du gesagt hast, über die Tatsache, dass es auf einem aktiven Terminal läuft, und ich habe ein paar Nachforschungen angestellt. Nach Stunden fand ich diese fantastische Ressource: [https://github.com/kr/pty](https://github.com/kr/pty] und alles funktioniert einwandfrei! Nochmals vielen Dank, hätte es ohne dich nicht geschafft! –