실행 파일이 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 ("/ usr/bin/sudo", "./a.out arg1 erg2").
여기서 첫 번째 논의는 정확히 무엇입니까? – Jarvis
그러나 execvp는 두 개의 인수 만 허용합니까? – Jarvis
그래, 간과했다. 답변을 수정했습니다. –