#include "systeme.h" #include Systeme::Systeme() : QObject() { } //================================================================================================================================ // Fonction : Lit le contenu d'un fichier texte et le retourne // Reçoit : Le nom du fichier // Retour : Une ligne "Ok" ou "Nok" représentant le résultat de la lecture puis la liste des lignes lues dans le fichier. //================================================================================================================================ QStringList Systeme::lecture_fichier(QString fichier) { QStringList retour; QFile file(fichier); // Appel du constructeur de la classe QFile if (file.open(QIODevice::ReadOnly | QIODevice::Text)) // Si l'ouverture du fichier en lecture à réussie { //qDebug() << "Ouverture du fichier [" << fichier << "] en lecture effectué avec succès !"; retour << "Ok"; QTextStream entree(&file); while(!entree.atEnd()) // Boucle sur toutes les lignes du fichier (attention, il y en a toujours une de plus à la fin...) { QString ligne = entree.readLine(); // Lecture de la ligne retour << ligne; // Ajout à la structure de retour //qDebug() << "Ligne lue dans le fichier : " << ligne; } file.close(); // Fermeture du fichier } else { qDebug() << "Erreur d'ouverture du fichier [" << fichier << "]. La lecture est abandonnée..."; retour << "Nok"; } return(retour); } //================================================================================================================================ // Fonction : Lit le contenu d'un fichier texte et le retourne // Reçoit : Le nom du fichier // Retour : 0 si Ok, -1 si Nok //================================================================================================================================ qint8 Systeme::ecriture_fichier(QString fichier, QStringList lignes) { QFile file(fichier); // Appel du constructeur de la classe QFile if (file.open(QIODevice::WriteOnly | QIODevice::Text)) // Si l'ouverture du fichier en écriture à réussie { //qDebug() << "Ouverture du fichier [" << fichier << "] en écriture effectué avec succès !"; QTextStream sortie(&file); for ( const auto& ligne : lignes ) { sortie << ligne << "\n"; //qDebug() << "Ligne écrite dans le fichier : " << ligne; } file.close(); // Fermeture du fichier return(0); } else { qDebug() << "Erreur d'ouverture du fichier [" << fichier << "]. L'écriture est abandonnée..."; return(-1); } } //=================================================================================================== // Fonction : Exécute la commande shelle reçue, attend la fin d'exécution et renvoi la réponse de // la commande. // Reçoit : la chaine de la commande // Renvoit : La chaine de retour de la commande //=================================================================================================== QString Systeme::commande_shell(QString commande, QString fichier_sortie) { //qDebug() << "Commande shell à lancer = [" << commande << "]"; QProcess process; // Mise en place du fichier de sortie : // ATTENTION : l'utilisation d'une redirection du type ' > fichier_sortie' ne fonctionne PAS avec QProcess... if (fichier_sortie != "") process.setStandardOutputFile(fichier_sortie); // Lancement de la commande : // process.start(commande); // Modif de 08/2026 lors du passage à Qt6 sur CM5 : l'appel direct ne fonctionnait pas avec certaines commandes précédée de sudo. // Le version ci-dessous fait le découpage ... avant d'appeler la fonction de start avec le découpage déjà fait. // Résoud le problème mais sans savoir exactement ce qui bloquait dans la commande précédente... QStringList args = QProcess::splitCommand(commande); QString programme = args.takeFirst(); process.start(programme, args); // Attente de la fin d'exécution : // ATTENTION : on bloque l'éxécution jusqu'à la fin de la commande...! process.waitForFinished(); //qDebug() << "QProcess error() =" << process.error(); //qDebug() << "QProcess exitCode() =" << process.exitCode(); //qDebug() << "QProcess exitStatus() =" << process.exitStatus(); // QThread::msleep(5); QString out(process.readAllStandardOutput()); // qDebug()<<"Sortie standard = "<