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 파일"이 어떻게 작동하는지 잘 모르겠습니다.
감사해요