Frage

Ich versuche, in einem anderen Prozess einen Kinderprozess zu erstellen. Ich schreibe beide Programme in der C -Sprache. Zuerst schreibe ich einen Dummy -Prozess, der der Kinderprozess sein wird. Was es tut, ist nur, eine Zeichenfolge auf den Bildschirm zu schreiben. Es funktioniert von selbst gut. Dann schreibe ich ein anderes Programm, das der übergeordnete Prozess sein wird. Ich kann es jedoch nicht schaffen. Ich versuche, Fork- und Execl -Funktionen zusammen zu verwenden, aber ich scheitere. Ich möchte auch, dass der Kinderprozess erst endet, wenn der übergeordnete Prozess endet.

Wie soll ich den übergeordneten Prozess schreiben?

Vielen Dank.

Hier ist der Code für den Kinderprozess:

#include <stdio.h>

int main(void) {
  while(1) {
    printf("*");
    sleep(1);
  }
}

Und hier ist der übergeordnete Prozess:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void) {
  if (fork()) {
    while(1) {
      printf("-\n");
      sleep(5);
    }
  } else {
    execl("./", "dummy", (char *)0);
  }
}
War es hilfreich?

Lösung

Welche Version verwendest du?Wenn Sie auf der API-Seite haben, haben Sie diesen Quellcode: generasacodicetagpre.

So ist das Verfahren dort, das von Anfang an genau definiert ist (Zeile 33 mehr oder weniger).
Suchen Sie hier für die Dokumentation der Methode: http://api.joomla.org/joomla-platform/jroute.html#method_

Andere Tipps

Grundlegende Verwendung von Gabel in C.

int PID = fork();

if( PID < 0 ) {
    //fail
    return PID;
}
else if( !PID ) {
    //child process
    return exec( prog, args );
} 
else {
    //parent process
    return 0;
}

Es gibt keine Möglichkeit, den Kinderprozess dazu zu zwingen, "nicht zu beenden", wenn es fertig ist (Sie können immer noch im Elternteil in der Lage sein wait Damit es Informationen darüber erhalten kann, wie es beendet wurde, aber das war es auch schon). Abgesehen davon eines der vielen Beispiele von fork/exec im Web, wie z. Dieses hier, sollte funktionieren - warum probierst du es nicht aus und prüfen, ob es nach Belieben funktioniert (in diesem Fall müssen Sie nur ändern, was Sie in Ihrem eigenen Versuch unterschiedlich gemacht haben). Wenn es nicht wie gewünscht funktioniert (mit Ausnahme der Unmöglichkeit gemäß dem ersten Satz in diesem a ;-), bearbeiten Sie bitte Ihr, um reichlich Details darüber hinzuzufügen, wie sich der Code anders verhält als Sie es erwarten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top