Sto scrivendo un programma per bambini per la pratica. Quello che sto cercando di realizzare è fondamentalmente una semplice piccola GUI che visualizza i servizi (per Linux); con i pulsanti per avviare, arrestare, abilitare e disabilitare i servizi (in modo simile alla scheda "Servizi" di msconfig in Windows). Sto usando C++ con Qt Creator su Fedora 21.Restituzione dell'output da script di bash alla chiamata della funzione C++
Voglio creare la GUI con C++ e compilare la GUI con l'elenco dei servizi chiamando gli script di bash e chiamando gli script di bash sui clic del pulsante per eseguire l'azione appropriata (abilitare, disabilitare, ecc.)
Ma quando la GUI C++ chiama lo script di bash (utilizzando system("path/to/script.sh")
) il valore di ritorno è solo per il successo dell'uscita. Come posso ricevere l'output dello script stesso, in modo che possa a sua volta usarlo per visualizzare sulla GUI?
Per un esempio concettuale: se provassi a visualizzare l'output di (systemctl --type service | cut -d " " -f 1
) in una GUI che ho creato in C++, come farei per farlo? Questo è anche il modo corretto di fare ciò che sto cercando di realizzare? In caso contrario,
- Qual è la strada giusta? e
- C'è ancora un modo per farlo usando il mio metodo attuale?
Ho cercato una soluzione a questo problema, ma non riesco a trovare le informazioni su come restituire i valori da Bash a C++, ma solo come chiamata script Bash da C++.
Benvenuti in Stack Overflow! Ho modificato la tua domanda per correggere la formattazione e renderla più chiara/concisa. Grazie per aver fornito tanti dettagli! Si prega di consultare [chiedere] e [aiuto] se avete domande su come porre domande. – jtbandes
Anche se apprezzo il tuo entusiasmo che ha assunto l'incarico di scrivere la tua app in C/C++ per chiamare 'systemctl', potresti dare un'occhiata a' zenity' o 'kdialog' della GUI (a seconda del desktop), che sono progettati per fornire una semplice interfaccia GUI ai comandi della shell. Anche se si finisce per scrivere il codice in C++, 'zenity/kdialog' è utile per la prototipazione. –