Zum Inhalt springen

system(), exec() usw.


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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...

Geschrieben

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 ;-)

Geschrieben

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...