Bash-Skripte sind sehr nützlich und können viel Programmierzeit sparen. Wie startet man ein Bash-Skript in einem C++ - Programm? Auch wenn Sie wissen, wie man Benutzer zum Super-User macht, wäre das auch schön. Vielen Dank!So führen Sie ein Bash-Skript aus dem C++ - Programm aus
Antwort
Verwenden Sie die system
-Funktion.
system("myfile.sh"); // myfile.sh should be chmod +x
#include <stdio.h>
#include <stdlib.h>
// ....
system("my_bash_script.sh");
Was wäre, wenn das Bash-Skript einen Text an tty zurückgeben würde? Z.B. Was wäre wenn es eine "Katze" wäre? Könnte das c-Programm diese Ausgabe haben? –
Der einzige Implementierung beauftragt Standard abhängig ist die system()
Funktion von stdlib.h
zu verwenden.
Auch wenn Sie wissen, wie man Benutzer zum Super-User wird, wäre das auch schön.
Soll das Skript als Super-User ausgeführt werden oder möchten Sie die Berechtigungen der ausführbaren Datei C erhöhen? Ersteres kann mit sudo
gemacht werden, aber es gibt ein paar Dinge, die Sie wissen müssen, bevor Sie mit sudo
gehen können.
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...
Auch wenn Sie wissen, wie Benutzer die Super-User werden zu lassen, das wäre auch schön. Vielen Dank!
sudo. su. chmod 04500. (setuid() & seteuid(), aber sie müssen bereits Root sein. E..g. chmod'ed 04 ***.)
Vorsicht. Diese können öffnen "interessant" Sicherheitslücken ...
Je nachdem, was Sie tun, müssen Sie möglicherweise nicht root. (Zum Beispiel: Ich werde oft chmod/chown/dev Geräte (serielle Ports, etc) (unter sudo root), so kann ich sie von meiner Software verwenden, ohne root.Auf der anderen Seite, das tut es nicht funktioniert so gut beim Laden/Entladen Kernel-Module ...)
Da dies eine ziemlich alte Frage ist, und diese Methode wurde nicht hinzugefügt (abgesehen von der system()
Aufruf-Funktion) Ich denke, es wäre sinnvoll, zu erstellen das Shell-Skript mit der C-Binärdatei selbst. Der Shell-Code wird in der Quelldatei file.c
gespeichert. Hier ist ein Beispiel für den Code ein:
#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;
}
Grundsätzlich auf den Punkt (Wortspiel beabsichtigt), definieren wir den Namen des Skripts, das Skript konkretisieren, sie in doppelte Anführungszeichen gesetzt (während richtige entkommt Einfügen doppelte Anführungszeichen ignorieren im Shell-Code) und dann den Namen dieses Skripts aufrufen, der in diesem Beispiel SHELLSCRIPT
unter Verwendung der system()
-Funktion in main()
lautet.
- 1. Führen Sie ein JGNAT-Programm aus?
- 2. Wie führen Sie ein Python-Skript aus einem C++ - Programm?
- 3. So führen Sie eine heruntergeladene Datei aus dem Speicher aus?
- 4. So führen Sie Javah aus Eclipse aus
- 5. So führen Sie das Java-Programm in der Eingabeaufforderung aus
- 6. So führen Sie ein C++ - Programm in einer Rails 4 WebApp aus
- 7. So führen Sie eine data.table-Zusammenführungsoperation aus
- 8. Führen Sie AppleScript aus C
- 9. So führen Sie die interne Abwicklungsfunktion aus:
- 10. Führen Sie Java-Methode aus einem C++ - Programm
- 11. So führen Sie mehrere SVN-Dienste aus
- 12. So führen Sie Shell-Einbau aus Scala
- 13. So führen Sie PowerShell in CMD aus
- 14. So führen Sie CPPUnit Komponententests aus
- 15. So führen Sie zwei Funktionen gleichzeitig aus
- 16. Führen Sie ein anderes Programm in C++
- 17. So führen Sie Pyint mit PyCharm aus
- 18. So führen Sie ein SQL Plus-Skript in PowerShell aus
- 19. So führen Sie ein Skript in zufälligen Intervallen aus
- 20. So führen Sie JavaScript auf dem Server aus
- 21. So führen Sie den Konsolenbefehl in yii2 aus dem Web
- 22. So führen Sie eine .jar-Datei aus einem Java-Programm aus
- 23. Führen Sie ein Python-Skript aus dem Web
- 24. So führen Sie NUnit-Tests aus C# -Code
- 25. So führen Sie ein externes Programm aus, z. Notizblock, mit Hyperlink?
- 26. So führen Sie C# -Projekt unter Linux aus
- 27. So führen Sie NUnit aus meinem Code aus
- 28. So führen Sie diese Abfrage aus
- 29. Führen Sie eine C# -Anwendung aus dem Python-Skript
- 30. So führen Sie ein Skript aus Batch-Datei
Danke, aber Sie haben vergessen, dies zu berücksichtigen: system ("./ myfile.sh"); – Kredns
Es wird ohne funktionieren. wenn der Ordner in Ihrem Pfad ist :) –
Das aktuelle Verzeichnis '.' sollte nicht * in Ihrem' $ PATH' sein. –