Desidero riavviare il computer eseguendo un comando in linux utilizzando QProcess
. Ho hardcoded la mia password di root nella mia applicazione.Come eseguire comandi complessi di linux in Qt?
Quando si esegue il seguente in un terminale funziona perfetto:
echo myPass | sudo -S shutdown -r now
Quando metto il comando in uno script shell e chiamo tramite QProcess
è anche successo:
QProcess process;
process.startDetached("/bin/sh", QStringList()<< "myScript.sh");
Ma non posso eseguirlo passando direttamente a QProcess
:
process.startDetached("echo myPass | sudo -S shutdown -r now ");
Sarà appena stampato myPass | sudo -S shutdown -r now
Come è possibile eseguire comandi relativamente complessi direttamente utilizzando QProcess
. (Non inserire uno script di shell).
Questo funziona bene e mi piace perché è più generale e più in un modo Qt. Non so a cosa serve questo: process2.setProcessChannelMode (QProcess :: ForwardedChannels); – Nejat
@Nejat: sì, potrebbe funzionare senza, ma l'ultima volta ho avuto problemi quando non l'ho avuta. Lo scopo è di reindirizzare l'output del processo secondario al processo principale, quindi, sì, potrebbe non essere necessario per il tuo caso. – lpapp