char *args[5];
args[0]="sudo";
args[1]="./a.out";
args[2]="arg1";
args[3]="arg2";
args[4]=NULL;
execvp("sudo", args);
Die Schale teilt den gegebenen Befehl in Leerzeichen getrennte Wörter. Das erste Wort wird in PATH
nachgeschlagen, und alle Wörter werden als Parameter an den Befehl übergeben.
Sinec execvp()
wird die PATH
für Sie suchen, können Sie einfach "sudo" als Befehl übergeben, dann die Argumente für den Befehl. Beachten Sie, dass das erste Argument des Befehls der Name des Befehls ist.
Der Befehl, den Sie ausführen, ist "sudo", das ist das erste Argument; dann die restlichen Wörter als einzelne Argumente, übergeben als ein Array.
Aber akzeptiert nicht execvp nur zwei Argumente? – Jarvis
Yup, das übersehen. Die Antwort wurde korrigiert. –