리눅스에서 QProcess
을 사용하여 명령을 실행하여 컴퓨터를 다시 시작하고 싶습니다. 내 응용 프로그램에 내 루트 암호를 하드 코딩했습니다. 내가 터미널에 다음을 실행하면Qt에서 복잡한 리눅스 명령어를 실행하는 방법은 무엇입니까?
이 완벽 작동합니다 내가 쉘 스크립트에 명령을 넣어 QProcess
를 통해 그것을 호출
echo myPass | sudo -S shutdown -r now
도 성공 :
QProcess process;
process.startDetached("/bin/sh", QStringList()<< "myScript.sh");
그러나 QProcess
에 직접 전달하여 실행할 수 없습니다.
process.startDetached("echo myPass | sudo -S shutdown -r now ");
그냥 인쇄 할 것입니다 myPass | sudo -S shutdown -r now
어떻게 비교적 복잡한 명령을 QProcess
을 사용하여 직접 실행할 수 있습니까? (쉘 스크립트에 넣지 않음).
이것은 잘 작동하며 Qt 방식으로 더 일반적이고 더 좋아하기 때문에 좋아합니다. 나는 이것이 무엇인지 모른다 : process2.setProcessChannelMode (QProcess :: ForwardedChannels); – Nejat
@Nejat : 예, 그게 없으면 작동 할 수도 있지만 마지막으로 문제가 생길 때가 있습니다. 그 목적은 하위 프로세스의 출력을 기본 프로세스로 리디렉션하는 것이므로, 귀하의 경우에는 불필요 할 수 있습니다. – lpapp