Der Martin: xampp - apache will nicht - nicht das übliche problem

Beitrag lesen

Hi,

Nur dass eine Ausgabe an std*** in GUI-basierten Anwendungen unter Windows ins Leere läuft
ok, der Apache ist keine GUI-basierte Anwendung.

stimmt auffallend. ;-)

Bei Konsolenanwendungen kann man diese Standardhandles aber uneingeschränkt verwenden.
Nein, eben leider nicht "uneingeschränkt". Die Konsolenanwendung muß den entsprechenden Kanal explizit anfordern.

Nein. Wenn Windows (früher auch DOS) einen Prozess startet, erbt der die Handles 0=stdin, 1=stdout, 2=stderr, 3=stdprn und 4=stdaux direkt vom Parent-Prozess. Das ist in letzter Instanz die System-Shell, die diese fünf Handles beim Booten direkt vom Betriebssystem geöffnet und initialisiert bekommt. Ein

fprintf(stderr, "message ...");

kann man also ohne jegliche Vorbereitungen im eigenen Programm ausführen. Oder das entsprechende Pendant in DOS-Assembler:

MOV   AH,40h         ; Funktionsummer (write to file)
 LDS   DX,message     ; DS:DX = Zeiger auf auszugebenden String
 MOV   CX,msglen      ; Länge (Anzahl der Bytes)
 MOV   BX,0002h       ; Handle 2=stderr
 INT   21h            ; Funktion aufrufen

Auch das kann man ohne jegliche Initialisierung machen - Handle 2 (stderr) ist "einfach da" und ist gültig.

und ebensowenig ein "/dev/null".
Das ist natürlich wahr.
Das tröstet mich jetzt aber sehr ;-)

;-)

Schönen Abend noch,
 Martin

--
In Ägypten haben früher 150000 Leute 35 Jahre lang an einer Pyramide gearbeitet. Aber bei uns arbeiten doppelt so viele Leute doppelt so lange allein an der Baugenehmigung.
  (Dieter Nuhr, deutscher Kabarettist)