Re: Fragen zu "stderr"

From: Bernd Walter <ticso(at)cicely12.cicely.de>
Date: Sun, 28 Oct 2007 12:38:02 +0100

On Sat, Oct 27, 2007 at 11:30:09PM +0200, Marc Santhoff wrote:
> Tatsächlich ist es ein TTY, kann aber durchaus auch in eine Textdatei
> umgeleitet werden. Und ich weiß nicht genau, auf welche Art (manuell,
> durch ein CGI etwa) das Programm gestartet wurde. Also heißt das für
> mich, es ist erstmal unsicher, in welchem Modus der Kanal arbeitet und
> ich muß prüfen und ggf. umschalten.
>
> Meine Frage reduziert sich dann auf einen anderen Aspekt:
> Mir wurde geraten, ich solle stderr erstmal schließen und neu öffnen
> (was ich nun als unnötig ansehe), wie mache ich denn das? Wenn ich
> stderr schließe, habe ich doch kein "handle" mehr, gibt es eine Methode,
> den vom System übergebenen Kanal neu anzuschließen?

Wenn du nicht weißt was das ist, dann kannst du es auch nicht neu öffnen.
Womöglich ist es ja sogar eine pipe, die kannst du nur in Absprache mit
der Gegenstelle neu erstellen.
Aber wenn du dir darüber Gedanken machst, also im Programm Änderungen
vornehmen kannst, dann kannst du doch auch einfach auf blocking stellen
und gut ist.
Was mir gerade noch so einfällt.
Es gibt auch noch eine andere Ursache für EAGAIN, nämlich ein Signal,
welches den system-call unterbricht.
Womöglich bekommst du ein sigchild, sigtimer, sigkill oder sonst was.
Hast du schon ermittelt, ob der Descriptor wirklich auf non-blocking
steht?

-- 
B.Walter                http://www.bwct.de      http://www.fizon.de
bernd(at)bwct.de           info(at)bwct.de            support(at)fizon.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 28 Oct 2007 - 12:39:17 CET

search this site