![C++에서 "sudo -S" 명령을 사용하여 터미널에 비밀번호 입력을 우회하는 방법은 무엇입니까? [복사]](https://linux55.com/image/229241/C%2B%2B%EC%97%90%EC%84%9C%20%22sudo%20-S%22%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%84%B0%EB%AF%B8%EB%84%90%EC%97%90%20%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%20%EC%9E%85%EB%A0%A5%EC%9D%84%20%EC%9A%B0%ED%9A%8C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
Linux 터미널에서 "sudo"를 전달하지 않고 루트로 다음 명령을 실행해야 합니다. . ('안전' 댓글을 게시하지 마세요...)
"hcitool CC 주소"
"sudo -S" 옵션을 사용하면 됩니다.
c로 작성된 추가 sudo/pipe 코드가 있습니다.
#include#include#포함
int main() { std::string userPass{"myPassword"}; std::string command{"sudo -S ps -lf 2>/dev/null <<_EOF\n" + userPass + "\n_EOF"}; FILE *pipe = popen(command.c_str(), "r"); 문자 *line = NULL; ssize_t rlen; while( (rlen = getline(&line, &len, 파이프라인)) > 0) [--rlen] = '\0'; // 후행 줄 바꾸기 std::cout << line << '\n' }
pclose(pipe);
free(line);
}
이것이 내가 지금까지 가지고 있는 것입니다
FILE *cmd;
int status;
QFile *pipe;
cmd = popen("/usr/bin/sudo -S id -un 2>/dev/null", "w");
// MODIFY for c++
QString Password = "q";
QString Command =" sudo -S ps -lf 2>/dev/null <<_EOF\n" + Password + "\n_EOF";
// std::string userPass{"myPassword"};
// std::string command{"sudo -S ps -lf 2>/dev/null <<_EOF\n" + userPass + "\n_EOF"};
pipe->open ???
I could use help finishing converting the c code into C++.
Qt를 사용하고 있지만 일반 C++ 코드도 괜찮습니다.
"옵션" "ps"를 이해하지 못합니다. man 문서에서 찾을 수 없습니다. 예제에서 "cmd 파일"이 어떻게 작동하는지 잘 모르겠습니다.
감사해요