Question Comment exécuter un script bash à partir d'un programme C ++


Les scripts Bash sont très utiles et peuvent économiser beaucoup de temps de programmation. Alors, comment démarrer un script bash dans un programme C ++? Aussi, si vous savez comment faire de l'utilisateur le super-utilisateur, ce serait bien aussi. Merci!


35
2018-03-14 16:43


origine


Réponses:


Utilisez le system fonction.

system("myfile.sh"); // myfile.sh should be chmod +x

49
2018-03-14 16:45



#include <stdio.h>
#include <stdlib.h>

// ....


system("my_bash_script.sh");

15
2018-03-14 16:46



La seule méthode standard dépendante de la mise en œuvre consiste à utiliser le system() fonction de stdlib.h.

Aussi, si vous savez comment faire de l'utilisateur le super-utilisateur, ce serait bien aussi.

Voulez-vous que le script s'exécute en tant que superutilisateur ou souhaitez-vous élever les privilèges de l'exécutable C? Le premier peut être fait avec sudo mais il y a quelques choses que vous devez savoir avant de pouvoir utiliser sudo.


9
2018-03-14 16:46



StackOverflow: Comment exécuter une commande et obtenir une sortie de commande dans C ++?

StackOverflow: (à l'aide de fork, pipe, select): ... plus personne ne fait les choses plus durement ...

Aussi, si vous savez comment faire de l'utilisateur le super-utilisateur, ce serait bien aussi. Merci!

sudo. su. chmod 04500. (setuid () & seteuid (), mais vous devez déjà être root. E..g. chmod'ed 04 ***.)

Prends soin. Celles-ci peuvent s'ouvrir "intéressant" Trous de sécurité...

Selon ce que vous faites, vous n'avez peut-être pas besoin de root. (Par exemple: je vais souvent chmod / chown / dev appareils (ports série, etc.) (sous racine sudo) Je peux donc les utiliser depuis mon logiciel sans être root. Par contre, cela ne fonctionne pas si bien lors du chargement / déchargement des modules du noyau ...)


4
2018-03-14 17:04



Comme il s’agit d’une question assez ancienne et que cette méthode n’a pas été ajoutée (à part la system() fonction d'appel) Je suppose qu'il serait utile d'inclure la création du script shell avec le binaire C lui-même. Le code shell sera logé à l'intérieur du file.c fichier source. Voici un exemple de code:

#include <stdio.h>
#include <stdlib.h>

#define SHELLSCRIPT "\
#/bin/bash \n\
echo -e \"\" \n\
echo -e \"This is a test shell script inside C code!!\" \n\
read -p \"press <enter> to continue\" \n\
clear\
"

int main() {

system(SHELLSCRIPT);
return 0;
}

Fondamentalement, en bref (jeu de mots), nous définissons le nom du script, en étoffant le script, en les plaçant entre guillemets (tout en insérant des échappements corrects pour ignorer les guillemets dans le code shell). dans cet exemple est SHELLSCRIPT en utilisant le system() fonction dans main().


1
2017-08-05 11:27