warum geht das folgende nicht:



  • #include <stdio.h>
    #include <unistd.h>
    
    int main(int argc, char *argv[])
     {
    
            execl("/usr/bin/vim","file.txt",0);
            return 0;
     }
    


  • int execl( const char *path, const char *arg, ...);

    Der Ausdruck const char *arg und die nachfolgenden Ellipsen ('...' wird auch Ellipse genannt) der Funktionen execl, execlp, und exe-
    cle ist als eine Liste mit einer unbestimmten Anzahl von Parametern arg0, arg1, ..., argn zu verstehen. Zusammen stellen sie eine
    Liste mit einem oder mehreren nullterminierten (mit '\0' abgeschlossenen) Zeichenketten dar, die der Funktion main des aufgerufenen
    Programms in argv[] ubergeben wird. Der erste Eintrag arg0 sollte ein Zeiger auf den Dateinamen des aufgerufenen Programms sein.
    Dieser Dateiname wird normalerweise von jedem Programm in argv[0] erwartet. Die Parameterliste der execl-Funktionen muB mit einem
    NULL-Zeiger abgeschlossen werden.

    #include <stdio.h>
    #include <unistd.h>
    
    int main(int argc, char *argv[])
     {
            char *arg[3];
            arg[0] = "/usr/bin/vim";
            arg[1] = "file.txt";
            arg[2] = NULL;
            execl("/usr/bin/vim",arg,0);
            return 0;
     }
    


  • danke geht mit argv jetzt



  • Du musst als erstes Argument für das aufgerufene Programm (argv[0]) den Aufrufpfad übergeben

    execl("foo", "foo", "xxx", NULL);
    

Anmelden zum Antworten