Socket.h: system('firefox &') ergibt CLOSE_WAIT

Hallo

Um ein Problem mit einer C/C++ Applikation zu Untersuchen, verwende ich folgendes TCP Socket „Client/Server“-Beispiel:
http://www.pronix.de/pronix-867.html

Dazu habe ich folgende Funktion zu server.c hinzugefügt:

static void openBrowser();

static void openBrowser()
{
 system("firefox &" );
}

Die Funktion rufe ich wie folgt in server.c auf:

 /\* Daten vom Client auf dem Bildschirm ausgeben \*/
**openBrowser(); // NEU** 
 echo( fd );

Info:

  • gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)
  • compile server: gcc -o server server.c
  • compile client: gcc -o client client.c
  • run server: ./server
  • run client: ./client localhost HALLO

Ausgabe des Servers nach Client Start:

$ ./server
Server bereit - wartet auf Anfragen ...
Bearbeite Client mit der Adresse: 127.0.0.1
Nachrichten vom Client : HALLO Wed Aug 29 08:50:50 2007

Das Problem:

# netstat -npat | grep CLOSE\_WAIT
tcp 0 0 127.0.0.1:1234 127.0.0.1:35450 CLOSE\_WAIT 21117/sh

Fragen:

  • Aus welchem Grund besteht eine TCP-Verbindung zu der Shell, die bei system(„firefox &“) geöffnet wird?
  • Wie kann ich das vermeiden oder die „automatisch“ eröffnete Verbindung beenden?

Irgendeine Idee?

Dank und Gruss
Olli