2016-09-23 4 views

Antwort

0
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.

+0

Aber akzeptiert nicht execvp nur zwei Argumente? – Jarvis

+0

Yup, das übersehen. Die Antwort wurde korrigiert. –

-1

Dies funktioniert nicht:? execvp ("/ usr/bin/sudo", "./a.out arg1 erg2").

+0

Was genau ist das erste Argument hier? – Jarvis

Verwandte Themen