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


Log in to reply