Scratch Geschrieben 14. Februar 2006 Geschrieben 14. Februar 2006 Hi, die Forumsuche bietet ja sehr viel über das Thema. system() ist schlecht, steht zumindest überall. Aber mir fehlen jetzt die Alternativen. Ich möchte z.B. eine Datei mit zip komprimieren. (Win und linux) Oder speziell auf Linux jetzt ein .tar.gz macht Was für einen Befehl verwende ich den jetzt? Ich möchte möglichst plattformunabhängigkeit bleiben und die Ausgabe der aufgerufenen Programme lesen. Kann hier jemand etwas Licht ins Dunkel bringen?? Danke! Gruß Scratch Zitieren
Guybrush Threepwood Geschrieben 14. Februar 2006 Geschrieben 14. Februar 2006 Also ein plattformunabhängiger Befehl fällt mir gerade nicht ein, aber auch mit system() bist du (wie du ja schon festgestellt hast) nicht wirklich unabhängig. Eine sehr schöne Erklärung dazu findest du hier: http://www.fun-soft.de/showtopic.php?threadid=9346&post_start=0&time= Zitieren
Scratch Geschrieben 14. Februar 2006 Autor Geschrieben 14. Februar 2006 Das hatte ich schon gelesen (Irgendwo in der Forumsuche gefunden). Das Problem ist wohl das "platformunabhängig bleiben". Dann mal anders wie kann ich den die Ausgabe von zB exec überwachen? Gruß Scratch Zitieren
Guybrush Threepwood Geschrieben 14. Februar 2006 Geschrieben 14. Februar 2006 Was meinst du mit überwachen? Außerdem gibt es nicht die exec Funktion, sondern verschiedene wie _execl _excele usw. Die sind aber alle nicht plattformunabhängig. Es mag sie zwar auf verschiedenen Plattformen geben aber evtl in verschiedenen Bibliotheken bzw Headern... Zitieren
Scratch Geschrieben 14. Februar 2006 Autor Geschrieben 14. Februar 2006 Wie kann ich reagieren wenn ein Fehler Auftritt in dem externen Programm ... Ich möchte zum Beispiel eine tar einer Datei machen und die Datei wird vorher gelöscht oder es wurden falsche Parameter übergeben, die Platte ist voll und solche Geschichten. Mein Programm sollte dann reagieren können. Im Prinzip die Rückgabe des Programms soll in meinem Programm sein ;-) Zitieren
TDM Geschrieben 21. Februar 2006 Geschrieben 21. Februar 2006 erster Treffer bei google, Die meisten davon verwenden kostenlose platformunabhängige Bibliothek mit tar und gzip musst du mal weitergooglen... zum Ausführen von anderen Programmen würde ich dir aber ShellExecute empfehlen. Glaub aber nicht, dass das plattformunabhängig ist. Zitieren
Scratch Geschrieben 23. Februar 2006 Autor Geschrieben 23. Februar 2006 popen ... war die Lösung. (Fast) plattformunabhängig und die Ausgabe des Programms kann in das eigene umgeleitet werden. string execute(string strCommand) { iSize = 255; FILE *myPipe; char cBuffer[iSize]; string strData; #ifdef _WIN32 myPipe = _popen(strCommand.c_str(),"rt"); #else myPipe = popen(strCommand.c_str(),"r"); #endif if(myPipe != NULL) { strData = ""; while(fgets(cBuffer,iSize,myPipe) != NULL) { strData = strData + cBuffer; } #ifdef _WIN32 _pclose(myPipe); #else pclose(myPipe); #endif } else { return ""; } return strData; } Danke an alle, besonders an Klotzkopp!! Gruß Scratch Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.