execl wächter



  • Hi again,
    soweit ich weis, kann man doch execl benutzen, um dynamisch den Programmcode zu wechseln. Gilt das auch für C++ oder ist es nur für C geeignet? Das Problem:

    execl("./prog", "prog", buffer, 0);
    

    Warnt mich, ein Wächter würde im Funktionsaufruf fehlen... Das kann doch nur heißen, dass die Funktion veraltet ist, oder?



  • Hmm, Leute? Was meint ihr dazu? Es muss doch eine C++ Möglichkeit geben. den Code gleich zu laden 😞



  • Ich schätze das Problem ist dass keiner was mit "ein Wächter würde fehlen" anzufangen weiss - wie wär's mit einem Codeausschnitt und der Compilermeldung? 😉



  • ich rufe die funktion wie folgt auf:

    execl("./prog", "prog", buffer, 0);
    

    Daraufhin erscheint die Fehlermeldung:

    59: Warnung: Wächter in Funktionsaufruf fehlt

    Mehr steht da auch nicht 😞

    buffer ist ein 200 byte großes char Array und prog das auszuführende Programm, welchem ich das Array übergeben möchte

    Es ist zwar nur eine Warnung, aber lässt das nicht darauf schließen, das der Header nicht mehr aktuell ist?



  • Geschweige denn, das ich noch nie was von execl gehört habe. 🙄 😕



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • MaxDemian schrieb:

    59: Warnung: Wächter in Funktionsaufruf fehlt

    Schalt doch bitte mal auf englisch um, damit kann ich absolut nichts anfangen.

    Es ist zwar nur eine Warnung, aber lässt das nicht darauf schließen, das der Header nicht mehr aktuell ist?

    Wie gesagt, ich finde das nicht allzu aussagekräftig und kann es mit folgendem Minimalbeispiel auch nicht nachvollziehen:

    #include <unistd.h>
    
    int main(void)
    {
            char buffer[200] = "--foobar";
            execl("./prog", "prog", buffer, 0);
            return 0;
    }
    

    Kompiliert fehler- und warnungsfrei mit "gcc -Wall -pedantic -ansi -o foo foo.c".

    Die exec-Familie verwendet man übrigens natürlich auch in C++. (Gibt ja ohnehin keine Alternativen dazu.)



  • Der guard/wächter der exec Funktion ist das letzte Element: 0.
    Es erwartet einen char* 0 Pointer -> (char*)0 oder NULL lässt die Warnung verschwinden



  • Seit wann gibt man denn bei execl das momentane Verzeichnis explizit an. <.<


Anmelden zum Antworten