Les scripts Bash sont très utiles et permettent d'économiser beaucoup de temps de programmation. Alors, comment lancez-vous un script bash dans un programme C++? Aussi, si vous savez comment faire de l'utilisateur le super-utilisateur, ce serait bien aussi. Merci!Comment exécuter un script bash à partir du programme C++
Répondre
Utilisez la fonction system
.
system("myfile.sh"); // myfile.sh should be chmod +x
#include <stdio.h>
#include <stdlib.h>
// ....
system("my_bash_script.sh");
Que faire si le script bash devait renvoyer du texte à tty? Par exemple. Et si c'était un "chat"? Est-ce que le programme c pourrait avoir cette sortie? –
La seule norme façon dépendante de la mise en œuvre obligatoire est d'utiliser la fonction de system()
stdlib.h
.
Aussi si vous savez comment faire de l'utilisateur devenir le super-utilisateur ce serait bien aussi.
Voulez-vous que le script s'exécute en tant que super-utilisateur ou que vous souhaitiez é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
.
StackOverflow: How to execute a command and get output of command within C++?
StackOverflow: (Using fork,pipe,select): ...nobody does things the hard way any more...
Aussi, si vous savez comment faire l'utilisateur de devenir le super-utilisateur qui serait bien aussi. Merci!
sudo. su. chmod 04500. (setuid() & seteuid(), mais ils requièrent que vous soyez déjà root (E..g. chmod'ed 04 ***.)
Faites attention. Ceux-ci peuvent ouvrir "intéressant" trous de sécurité ...
Selon ce que vous faites, vous ne pouvez pas avoir besoin de root. (Par exemple: Je vais souvent chmod/chown/dev périphériques (ports série, etc) (sous sudo root) afin que je puisse les utiliser depuis mon logiciel sans être root, d'autre part, cela ne fonctionne si bien lors du chargement/déchargement des modules du noyau ...)
Comme il s'agit d'une question plutôt ancienne, et que cette méthode n'a pas été ajoutée (mis à part la fonction d'appel system()
), j'imagine qu'il serait utile d'inclure la création le script shell avec le binaire C lui-même. Le code shell sera hébergé dans le fichier source file.c
. 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;
}
En fait, en un mot (jeu de mots), nous définissons le nom du script, étoffant le script, les enfermant dans des guillemets doubles (tout en insérant les évasions propres à ignorer les guillemets doubles dans le code shell), puis en appelant le nom de ce script, qui dans cet exemple est SHELLSCRIPT
en utilisant la fonction system()
dans main()
.
- 1. bash: Exécuter un autre programme dans le répertoire courant en cours d'exécution à partir du chemin
- 2. Comportement étrange lors de l'exécution d'un script bash à partir du programme Java
- 3. Comment exécuter un programme Java à partir d'un répertoire différent?
- 4. Comment puis-je exécuter un fichier de script SQL à partir du programme d'installation de msi (C#)?
- 5. Comment exécuter un programme externe à partir de Java?
- 6. Exécuter un programme à partir de MemoryStream
- 7. Comment exécuter un script bash sur save dans NetBeans?
- 8. Script Ksh: Exécuter un remplacement de type bash: ${@/.txt/}
- 9. Comment exécuter un script PowerShell à partir de SSIS
- 10. script bash 'here strings'
- 11. Comment exécutez-vous SQL à partir d'un script bash?
- 12. Exécuter "echo $ PATH" à partir d'un programme c?
- 13. Comment exécuter un script Perl depuis un script Perl?
- 14. Exécution d'un autre programme à partir du projet C# setup
- 15. À partir du script cmd.exe, comment puis-je planifier une tâche à exécuter lors du prochain démarrage (et plus jamais)?
- 16. Comment exécuter un programme à partir de Python? os.system échoue en raison d'espaces dans le chemin
- 17. exécuter la sortie d'un script comme une commande bash autonome
- 18. Comportement très étrange lors du lancement des démons Ruby à partir du script bash au démarrage
- 19. Comment inclure un caractère pipe dans un argument à un fichier batch à partir d'un script bash?
- 20. Entrée à partir du script shell
- 21. Comment exécuter un script .csh avec des arguments de ligne de commande à partir du script .csh
- 22. exécuter/ouvrir un programme en C#
- 23. script BASH passant entrée stdin à un programme et de donner le contrôle à l'entrée d'utilisateur
- 24. Exécuter un script php (distant) à partir d'un script python (local)
- 25. retourner une valeur à un programme C# par script python
- 26. Shell exécuter à partir de Ruby
- 27. Déterminer le chemin du script BASH exécution
- 28. Comment envoyer un paquet ARP à partir d'un programme C?
- 29. Erreurs sur le script bash du débutant
- 30. Afficher la boîte de dialogue à partir du script Linux
Merci, mais vous avez oublié d'inclure ceci: system ("./ myfile.sh"); – Kredns
Ça va marcher sans. si le dossier est dans votre chemin :) –
Le répertoire courant '.' * ne devrait pas * être dans votre' $ PATH'. –