Programmieren - alles kontrollieren 4.937 Themen, 20.655 Beiträge

Linux C-Sockets: system('firefox &') ergibt CLOSE_WAIT

d-oli / 0 Antworten / Flachansicht Nickles

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

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen