私は実行可能ファイルa.out
にいくつかの引数を取っています:command-line
この実行可能ファイルはroot
特権で実行する必要があります(sudo ./a.out arg1 arg2 ...
など)。execvp関数を使ってbashのsudoコマンドを実行するには?
execvp
システムコールをC++で使用するにはどうすればよいですか?
私は実行可能ファイルa.out
にいくつかの引数を取っています:command-line
この実行可能ファイルはroot
特権で実行する必要があります(sudo ./a.out arg1 arg2 ...
など)。execvp関数を使ってbashのsudoコマンドを実行するには?
execvp
システムコールをC++で使用するにはどうすればよいですか?
char *args[5];
args[0]="sudo";
args[1]="./a.out";
args[2]="arg1";
args[3]="arg2";
args[4]=NULL;
execvp("sudo", args);
シェルは、指定されたコマンドを空白で区切られた単語に分割します。最初の単語はPATH
で検索され、すべての単語がパラメータとしてコマンドに渡されます。
Sinec execvp()
あなたのためにPATH
を検索します。コマンドにsudoを渡して、コマンドに引数を渡してください。コマンドの最初の引数はコマンドの名前です。
実行しているコマンドは "sudo"なので、これが最初の引数です。残りの単語は個々の引数として配列として渡されます。
しかし、execvpは2つの引数しか受け付けませんか? – Jarvis
うん、それを見落とした。答えを訂正しました。 –