Shell unter Linux ausführen
-
Hallo zusammen.
Ich habe bisher versucht unter Linux ein Shellscript aus meinem C++ Programm auszuführen.
using namespace std; int main(int argc, char** argv) { while(1) { system("./test_script.sh >> testdatei.txt"); } return (EXIT_SUCCESS); }
Wenn ich es allerdings mit dem befehl System ausführe, wird nach einer gewissen zeit mein Programm abgebrochen ... (core dumped).
In die Datei, wird durch das Shellscrkipt einfach eine neue Zeile in einer Datei mit bestimmten Inforamtionen erzeugt.
Jetzt habe ich mal gelesen, dass man das auch mir fork und exec machen kann. Allderdings habe ich da keinen Schimmer wie das gehen kann.
Könnt Ihr mir da vielleicht helfen?
gruß anno
-
anno schrieb:
Könnt Ihr mir da vielleicht helfen?
Nein, aber ich kenne da zwei: google und man-pages.
--> google: http://www.osix.net/modules/article/?id=641
--> man fork: http://man.cx/fork(2)/de
--> man exec: http://www.hmug.org/man/3/exec.phpbeim nächsten mal aber selber suchen
-
Xantus schrieb:
anno schrieb:
Könnt Ihr mir da vielleicht helfen?
Nein, aber ich kenne da zwei: google und man-pages.
--> google: http://www.osix.net/modules/article/?id=641
--> man fork: http://man.cx/fork(2)/de
--> man exec: http://www.hmug.org/man/3/exec.phpbeim nächsten mal aber selber suchen
hm ja ok thx.
int kind_pid = 0; while(1) { if((kind_pid = fork()) == 0) { execl("/bin/sh","sh", "/pfad_zu_datei/test_script.sh >> testdatei"); } sleep(10); }
allerdings kann ich da die shellscripte auch nicht mit "execl" in einer endlosschleife aufrufen. Nach diesem aufruf bricht mir das programm einfach ab und in die textdatei wird auch nix geschrieben, obwohl die parameteraufrufe eingetlich passen.
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hi,
versuchs mal so:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> void func(void) { system("/bin/sh test.sh >> test.txt"); printf(" Child: work done!\n"); sleep(10); } int main (void) { pid_t id; if ((id = fork()) == 0) { printf(" Child: started\n"); func(); printf(" Child: stopped\n"); } else { int status = 0; printf(" Parent: started child %d\n", id); id = wait(&status); printf(" Parent: child %d terminated!\n", id); } return 0; }
Gruß mcr
-
alles klar, danke. versuche ich dann mla noch einer shcleife zu machen.