AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu C (Linux Programmierung)

Ein Thema von A.Griffin · begonnen am 10. Mai 2017 · letzter Beitrag vom 11. Mai 2017
Antwort Antwort
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#1

AW: Frage zu C (Linux Programmierung)

  Alt 10. Mai 2017, 15:43

Ich habe aber jetzt das Problem, dass das nicht threadsicher zu sein scheint und die Software abstürzt, wenn ErrorAdd in einem zweiten Thread genutzt wird. Was kann ich da machen?
also STDERR und STDOUT, wie Klaus vorgeschlagen hat, ist m.E. best practice. So wird es in Linux gehandhabt. Du brauchst es nicht anders zu machen.
So kann der User (z.B. Du während der Entwicklung) entscheiden, wo der Kram hingeht, Dateiumleitung, STDOUT, dev/null, ..

Unter Windows soll es sowas ja auch geben...
Gruß, Jo
  Mit Zitat antworten Zitat
A.Griffin

Registriert seit: 17. Feb 2017
94 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Frage zu C (Linux Programmierung)

  Alt 10. Mai 2017, 15:49
Das würde dann so gehen:

Code:
fprintf( stderr, "Text" );
und dann in linux die software so starten:

Code:
programm 2> Datei.txt
Es würde dann nur noch der Zeitstempel fehlen.

Geändert von A.Griffin (10. Mai 2017 um 15:54 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Frage zu C (Linux Programmierung)

  Alt 10. Mai 2017, 16:02
Hallo,

Zeitstempel steht weiter oben schon
fprintf(fpError, "%s: %s\r\n", getTimestamp(), logBuf); oder halt gleich so
fprintf(stderr, "%s: %s\r\n", getTimestamp(), logBuf);
Heiko
  Mit Zitat antworten Zitat
A.Griffin

Registriert seit: 17. Feb 2017
94 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Frage zu C (Linux Programmierung)

  Alt 10. Mai 2017, 16:04
Hast Recht danke. Dann ist jetzt alles klar. Ich hoffe das klappt so.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#5

AW: Frage zu C (Linux Programmierung)

  Alt 10. Mai 2017, 16:36
WriteLn ... fprintf ... ist doch alles das Selbe
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#6

AW: Frage zu C (Linux Programmierung)

  Alt 11. Mai 2017, 06:28
Hey!
Auch wenn ich jetzt hinterher komme wie die alte Fasenacht: Es gibt noch eventuell etwas Wichtiges, das du bei in den String integrierten Zeitstempeln berücksichtigen solltest (falls das für deinen Usecase relevant sein sollte, da du ja eine Konsolen UI hast...).
Moderne Linux Distributionen (Stichwort systemd) führen bei Diensten ein Journal über die Ausgabe. Dieses Journal ist sehr einfach für Sysadmins durchsuchbar (über den Befehl "journalctl") und wird automatisiert mit Zeitstempeln versehen. Das nur zur Vollständigkeit halber. Das Journal kann afaik auch log Dateien.

Zudem kam mir noch etwas: Wie meine Vorredner gesagt hatten, ist der Standardweg tatsächlich über stderr, wenn man Fehler reportet. Wenn dir das "gepipe" mit >2 zu doof ist (was sozusagen explizit das Fehlerreporting aus dem Weg räumt), kannst du das auch umgekehrt machen und über einen Startparameter z.B. "-e [optional pfad]" den Fehlerreport explizit zum Anschalten machen (optionaler Pfad: wenn Pfad fehlt, werden Fehler nach stderr weitergeleitet)

Und dann gibt es für die Ausgabe grundsätzlich noch die Möglichkeit herauszufinden, ob es sich bei stderr um eine Konsole handelt (mit z.B. isatty). Du könntest dann die Fehler dann grafisch über deine UI ausgeben

Brighty
Do you have the email of god??? --- I have to tell him that I'm happy to be born!

Geändert von BrightAngel (11. Mai 2017 um 06:33 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz