2016-09-23 1 views

Répondre

0
char *args[5]; 

args[0]="sudo"; 
args[1]="./a.out"; 
args[2]="arg1"; 
args[3]="arg2"; 
args[4]=NULL; 
execvp("sudo", args); 

Le shell divise la commande donnée en mots délimités par des espaces. Le premier mot est recherché dans PATH, et tous les mots sont transmis en tant que paramètres à la commande.

Sinec execvp() va chercher le PATH pour vous, vous pouvez simplement passer "sudo" comme commande, puis les arguments à la commande. Notez que le premier argument de la commande est le nom de la commande.

La commande que vous exécutez est "sudo", donc c'est le premier argument; puis les mots restants en tant qu'arguments individuels, passés en tableau.

+0

Mais execvp n'accepte-t-il que deux arguments? – Jarvis

+0

Yup, négligé cela. Corrigé la réponse –

-1

Cela ne fonctionne pas:? execvp ("/ usr/bin/sudo", "./a.out arg1 erg2").

+0

Quel est exactement le premier argument ici? – Jarvis