aus Programm Unix/Linux befehle ausführen und Ergebnisse einlesen

Navigato

Grünschnabel
Hi,

wie kann ich aus einem C/C++ Programm welches unter Unix laufen soll einen Systembefehl (ps -e) absetzen und dann das Ergebinss in eine Variable einlesen

Gruß
Navigato
 
Da aber system(),exec()/fork() nur den Befehlrückgabewert/ die PID es Kindprozesses als
ergebniss zurückgibt müsstest du dein Ergebniss z.B. in ein File einlesen via
ps -e > ps.txt und dieses dann in deinem C++ Programm auslesen.

Gruß

RedWing
 
Evtl. besteht auch die Möglichkeit stdin, stderr, stdout umzuleiten für den Kindprozess (das geht jedenfalls bei Windows), aber ob das bei UNIX auch geht weiß ich nicht.

Gruß Homer
 
Hi,

schau dir mal die Funktion popen an.
Benutzt sich wie fopen:
Code:
FILE *proc;
char buf[256];

if ((proc = popen("/bin/ls", "r")) == NULL) {
	fprintf(stderr, "Fehler\n");
	return 1;
}

while (!feof(proc)) {
	fgets(buf, 255, proc);
	printf("ls output: %s", buf);
}

pclose(proc);
 
Alternative

Als Alternative zu dem Systembefehl kannst du auch das virtuelle /proc Verzeichniss auslesen, dasz letztendlich auch direkt dafuer gedacht ist, Informationen an Programme weiterzugeben, ohne jetzt ps & Co auszugeben.
 

Neue Beiträge

Zurück