Programm starten und loggen



  • Der Code sieht schonmal vielversprechend aus aber wenn ich das Programm dann öffne kommt nur 'ne leere Console. Ohne etwas - nur ein blinkender Cursor, kein Text und was eingeben kann man auch nicht.



  • helpinclude schrieb:

    Dann mach halt ne *.bat mit genau diesem Inhalt...

    Das.



  • Radneuerfinder schrieb:

    helpinclude schrieb:

    Dann mach halt ne *.bat mit genau diesem Inhalt...

    Das.

    Wenn man keine Ahnung hat einfach mal Fresse halten..



  • Du willst "server 2>&1|tee server.log". Aber dafür brauchst du die GNU-Tools unter Windows. Das geht zum Beispiel mit Cygwin.

    Das 2>&1 dient übrigens dazu, dass auch Fehlermeldungen die von std::cerr kommen mitgeloggt werden und nicht nur std::cout Ausgaben.
    Denn du willst sicher alles was man auf der Konsole sieht haben, oder nicht? 🙂



  • Tippgeber schrieb:

    Du willst "server 2>&1|tee server.log". Aber dafür brauchst du die GNU-Tools unter Windows. Das geht zum Beispiel mit Cygwin.

    Das 2>&1 dient übrigens dazu, dass auch Fehlermeldungen die von std::cerr kommen mitgeloggt werden und nicht nur std::cout Ausgaben.
    Denn du willst sicher alles was man auf der Konsole sieht haben, oder nicht? 🙂

    Eventuell kann man mit Windows-Boardmitteln sogar einen Stream duplizieren, das will ich nicht ausschließen, allerdings ist mir nicht bekannt wie das geht (falls es überhaupt geht).



  • Tippgeber schrieb:

    Denn du willst sicher alles was man auf der Konsole sieht haben, oder nicht?

    In der Tat. Was genau ist dieses 2>&1|tee ?



  • - schrieb:

    Tippgeber schrieb:

    Denn du willst sicher alles was man auf der Konsole sieht haben, oder nicht?

    In der Tat. Was genau ist dieses 2>&1|tee ?

    Die Ströme haben einen Zahlenwert zugeordnet, dabei ist 1 die Standardausgabe, 2 die Standardfehlerausgabe und 3 die Standardeingabe.
    Das hat jedoch nichts mit C++ zu tun, sondern ist Sache des Betriebssystems. In meinem Fall beziehe ich mich auf Linux.

    Der Umleitungsoperator > kennst du ja schon, wenn du einfach > schreibst leitet er die Standardausgabe um, du kannst aber angeben welchen Strom er umleiten soll, dazu schreibst du z.B. die 2 davor, also 2> und statt in eine Datei kann man auch auf einen anderen Strom umleiten dazu benutzt man &<zahl> wobei <zahl> die Zahl des Stroms ist, in unserem Fall die 1 für die Standardausgabe.
    Kurz: 2>&1 leitet die Standardfehlerausgabe auf die Standardausgabe um.

    Der Pipe-Operator | leitet die Standardausgabe des ersten Programmes auf die Standardeingabe des zweiten Programmes um. In unserem Fall ist das "tee", welches die Standardeingabe auf die Standardausgabe ausgibt und in eine Datei, in unserem Fall server.log

    Wie gesagt es kann sein, dass es unter Windows direkt geht, aber mit Cygwin geht es auf jeden Fall auch unter Windows.
    Alternativ kannst du dir selbst so ein Programm schreiben, dazu musst du dich etwas in die Winapi einlesen. Eventuell unterstützt diese sogar das duplizieren von Streams direkt.



  • Also, mit cmd.exe funktioniert das genau so wie ich es haben will, aber mit meiner Gameserverconsole will es nicht klappen. Die will einfach nicht starten, das Fenster bleibt leer und die LOG auch. Woran könnte das liegen?
    Hab das übrigens auch mit system() gestratet:

    system("server.exe 2>&1|tee server.log");
    


  • Radneuerfinder schrieb:

    helpinclude schrieb:

    Dann mach halt ne *.bat mit genau diesem Inhalt...

    Das.

    Erstens, mit einer BAT kommt genau das selbe.
    Zweitens, soll das nur der Anfang sein und für den Rest reicht BATCH nicht aus.
    Drittens, Fuck Off!



  • - schrieb:

    Drittens, love Off!

    Was denn das für ne bescheuerte Zensur hier..



  • - schrieb:

    Radneuerfinder schrieb:

    helpinclude schrieb:

    Dann mach halt ne *.bat mit genau diesem Inhalt...

    Das.

    Wenn man keine Ahnung hat einfach mal Fresse halten..

    Bis jetzt habe ich den Eindruck, daß Du hier derjenige ohne Ahnung bist ...



  • - schrieb:

    Also, mit cmd.exe funktioniert das genau so wie ich es haben will, aber mit meiner Gameserverconsole will es nicht klappen. Die will einfach nicht starten, das Fenster bleibt leer und die LOG auch. Woran könnte das liegen?
    Hab das übrigens auch mit system() gestratet:

    system("server.exe 2>&1|tee server.log");
    

    Hä, ich kann dir nicht folgen. Ist die Gameserverconsole eine eigene Anwendung, oder eine Konsolenanwendung?



  • Tippgeber schrieb:

    Hä, ich kann dir nicht folgen. Ist die Gameserverconsole eine eigene Anwendung, oder eine Konsolenanwendung?

    Eine Konsolenanwendung.


Anmelden zum Antworten