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
d-oli