ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
2341
2341
EMPFEHLEN
-
Hallo Leute,
ich möchte gerne einen Befehl ausführen in Linux und die ausgabe in meinem c++ Programm verarbeiten. Genau gesagt geht es um festzustellen wieviele Festplatten der PC besitzt.
Mit den Befehl möchte ich dies gerne abfragen. Eine Möglichkeit wäre natürlich die umleitung in einer Datei und dann diese Datei einlesen. Aber es wäre mir anders schon lieber und auch "sauberer" finde ich.Code :1
cat /proc/partitions
In .NET war dies schon einfach mit System.Diagnostics.Process, ich hoffe sowas vergleichbares gibt es dort auch.
Viele Grüße und besten Dank schon einmal im vorraus.
Fridulin
-
09.10.07 23:49 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
/proc/partitions ist doch eine Datei! Die kannst du einfach mit fopen öffnen und auslesen!
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hallo,
vielen Dank für die Antwort.
Oh das es eine Datei ist auf den Gedanken bin ich ehrlich gesagt noch nicht gekommen..... Aber es wäre trotzdem noch schön zu wissen vielleicht für den ein oder anderen Befehl/Programm zu wissen wie man ein Rediect macht.
Viele Grüße, ich wünsche noch einen schönen Abend.
Fridulin
Edit: Ich habe es jetzt geschaft den Output umzuleiten.
Code :1 2 3 4 5 6 7 8
FILE *befehl; char temp[100]; befehl = popen("cat /proc/partitions", "r"); while(fgets(temp, 100, prc)) { printf("$s\n", temp); }
Viele Grüße und eine gute Nacht wünsche ich.
FridulinGeändert von Fridulin (10.10.07 um 01:36 Uhr)
-
10.10.07 07:28 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.Aber es ist unter Linux/Unix doch alles eine Datei: TV Karten, Festplatten, Partitionen usw. werden alle als Dateien im Dateisystem abgebildet. Und das /proc Dateisystem enthält natürlich auch Dateien.

Nicht vergessen die Pipe ordentlich mit pclose() wieder zu schliessen.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hallo,
ich muß gestehen ich bin noch ziehmlich unerfahren auf dem Gebiet Linux. So habe ich wieder was dazu gelernt.
Ich bräuchte noch einmal deine/eure hilfe. Ich habe möchte die erkannten Festplatten nun mounten. Die kalppt auch, aber er gibt wieder die Standart ausgabe in der Console und sie wird nicht umgeleitet.
Hat jemand eine Idee warum der Code bei cat funktioniert, nur nicht bei mount oder mkdir?
Code :1 2 3 4 5 6
char temp [100]; FILE *befehl; string mountbefehlfat32 = "mount -t fat32 /dev/" + welche + " mnt/" + welche; // wobei welche für z.B. sda1 steht. befehl = popen(mountbefehlfat32.c_str(), "r"); //... und dann mit While das abfragen, wie in mein geposteten Beispiel
Mit den Code schreibt er direkt in der Console Nur "root" kann dies tun, nur ich möchte das eben, wie gesagt, gerne in mein Programm umleiten lassen...
Über jede Idee wäre ich sehr dankbar.
Viele Grüße
Fridulin
-
11.10.07 14:20 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Fehlerausgaben werden auf die Standarderrorausgabe (stderr) geschrieben. Die Pipe ist nur mit der Standardausgabe (stdout) des aufgerufenen Befehls verbunden.
Da das Programm aber mit /bin/sh -c "<cmd>" aufgerufen wird, könntest du mit Hilfe der Shell stderr auf stdout umleiten:Code cpp:1
string mountbefehlfat32 = "mount -t fat32 /dev/" + welche + " mnt/" + welche + " 2>&1";
Wenn das nicht funktioniert müßtest du selbst mit pipe() und fork() arbeiten.
GrußGeändert von deepthroat (11.10.07 um 14:22 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hallo,
achso dann werden normalerweise Fehler und normale Ausgaben von einander getrennt, wenn ich dich richtig verstehe.
Dein Befehl hat wunderbar geklappt, auch wenn ich ehrlich gesagt nicht 100% da den "Durchblick" habe. Ich werde versuchen mich dort ein wenig "schlauer" zu machen.
Besten Dank, ich wünsche noch einen schönen Nachmittag.
Fridulin
Ähnliche Themen
-
Linux/Shell Befehl alle Dateien samt unterornder in einem Ordner verschieben
Von Sebastian_001 im Forum Linux & UnixAntworten: 1Letzter Beitrag: 20.04.10, 19:44 -
Flash-Intro aus Quicktime machen und in html einbetten mit redirect-Befehl
Von peinlich im Forum Flash PlattformAntworten: 2Letzter Beitrag: 10.03.10, 12:15 -
Ambiguous output redirect.
Von mkoeni1 im Forum Linux & UnixAntworten: 1Letzter Beitrag: 01.04.09, 20:33 -
shell Befehl gibt fortlaufend zeilenweise Output aus - wie auslesen?
Von Paula im Forum PHPAntworten: 4Letzter Beitrag: 16.08.07, 12:37 -
Befehl für Redirect, header(...) nicht
Von Chocobanana im Forum PHPAntworten: 2Letzter Beitrag: 14.12.03, 10:15





Zitieren

Login






