C: Umschalten bei ständig laufendem Cildprocess

N

Nano

Foren As
Hallo zusammen ich stehe vor folgendem Problem,

ich erzeuge in einem C Programm per fork ein Kind in möchte in diesem eine Shell ausführen ( bash, sh ... ) wie kann ich das kind nun "schlafen" schicken und im vaterprozess weiterarbeiten ohne das kind zu beenden bzw die Shell zu beenden ?

Code:
  if (pid == 0)
   {
                system("sh");
// jetzt soll das kind schlafen und auf einen eingabestrom des vaters warten 
// der z.b ein kommando in sh ausführen soll
   }
   else if (pid > 0)
   {
      // einlesen von kommandos  (soweit klar )
      // senden der kommandos per pipe an das kind bzw sh

   }

Ist das in der Form überhaupt machbar ? Oder muss ich jedesmal per exec eine neue sh aufrufen und den befehl dort ausführen ?
 
Aus Deinen beiden Posts heraus habe ich den Verdacht, dass Du vielleicht mit Kanonen auf Spatzen schiesst. Wenn Du einfach ein Kommando ausführen willst und den Output wiederhaben willst, verwende doch popen.

popen liefert aber nur Streams in eine Richtung. Was Du vorhast, läuft auf Folgendes heraus:

- die Standard-Filedeskriptoren dup()-lizieren
- fork()-en
- das Kindprozessimage per exec() gegen eine sh() ersetzen.

Hier ist ein Demo.
 
Zuletzt bearbeitet:

Ähnliche Themen

Windows clients können nicht mehr auf lange laufendes System zugreifen

Debian squeeze, Webmin, Samba Freigaben

Auf Child warten das nicht beendet wird ?

C : Prozesskommunikation

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

Zurück
Oben