Schnittstelle zwischen PHP und C ... Fehler Rückgabewert
-
Hallo Leute,
ich habe ein PHP Programm geschrieben, was mittels exec() eine C Programm aufruft.
Das C Programm hat indirekt die Aufgabe N neue Prozesse zu Starten und dann sofort wieder zurück zu kehren, also egal welchen Status die Kind Prozesse haben.Beide Programm laufen, jedoch erhält das PHP Programm keinen Wert vom C Programm, obwohl im C Programm ein Rückgabewert deklariert ist. Ausserdem dauert das Starten der ca. 10 kleinen Prozesse teilweise 30 sec und mehr. Ich bin mir daher zimlich sicher, das das C Hauptprogramm auf die Kind Prozesse wartet (was es ja nicht soll).
Hier ein kleiner Code Schnippsel
for(i=1; i<=max_se; i++)
{
pid=fork();
if (pid==0)
{
// Kind-Prozess
system(...);
return EXIT_SUCCESS;
}
}return EXIT_SUCCESS;
Kann mir vielleicht jemand sagen was ich im C-Programm falsch mache?
Das C Programm soll nur die Kind-Prozesse starten und dem PHP Script einen Wert zurück liefern. Das sollte dann ja nur wenige Milli-Sekunden benötigen.Für eine Antwort wäre ich sehr Dankbar.
Gruss
Flucker
-
Hallo Leute,
ich konnte so eben, die Antwort von wo anderes bekommen.
PHP und C warten beim Aufruf eines externen Programms mittels system(...) auf den Rückgabe Wert (String).
Um dies zu verhindern, muss man am Ende eines Programm aufrufes ein "> /dev/null" anhängen, das die Ausgabe (auch wenn es gar keine gibt) ins nervana schickt.
z.B. system(... > /dev/null)
Vielleicht hat ja irgend jemand mal das selbe Problem
Gruss
Flucker
-
Vielleicht ist man: system(3) nicht die Funktion die du brauchst.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39453.html