Prozesse einzelnd einlesen !
-
Hallo,
Ich möchte mit Listen einzelnd alle Prozesse einlesen auf Linux.
Wie könnte ich das realisieren mir fällt nichts ein. Prozesse erstellen
Kann ich ja aber einlesen hmm ...Viele Grüsse !
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x, bzw. C++11) 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.
-
Stell doch mal brauchbare Fragen, anstatt 3 Zeilen ins falsche Forum zu kotzen. Mit über 100 Beiträgen sollte man doch mal so langsam mitbekommen haben, wie das hier läuft. Das dumme ist bloß, dass du vermutlich auch mit dieser Frage eine Antwort bekommst und wieder nix lernst.
Deine Frage provoziert bei mir spontan 11 Gegenfragen, die du ohne Probleme gleich hättest beantworten können, bzw. durch Klarstellung gleich ganz hättest vermeiden können:
- Listen? Meinst du std::list?
- Wenn ja, warum?
- Wo wäre beim Einlesen der Unterschied zu jeder anderen Datenstruktur?
- Wieso hältst du es für nötig, in deiner Frage ausdrücklich Listen zu erwähnen?
- Hast du spezielle Probleme mit Listen?
- Wieso willst du die Prozesse unbedingt einzeln lesen? Warum ist das wichtig?
- Hast du Probleme, die Prozesse zu lesen? Ist es das, was du wissen möchtest?
- Was hast du schon gemacht? Was weist du schon?
- Wobei hast du Schwierigkeiten?
- Wieso erwähnst du eigene Prozesse? Willst du nur selbst erstellte Prozesse lesen?
- Was genau meinst du eigentlich mit "Lesen"?
-
Also ich erwarte auf jeden Fall keine vollständige Lösung!
Und das mit den NodeList wird dann auch meine Aufgabe sein.
Ich weis jetzt nur nicht wie das einlesen der Prozesse unter
Linux funktioniert.Ich möchte dann z.B einzeln alle Prozesse
einlesen und sie dann Ausgeben.Mit lesen mein ich das ich dann
alle Prozesse irgendwie habe und dann gezielt auf eins zugreifen
kann.Wenn ich einfach nur ps -A werden mir alle Prozesse angezeigt
kann aber nicht einzelnd damit was machen.
z.B. dann einzelnd jedes Prozess untereinander in ein textdatei
speichern.Entschuldigung wenn ich mich falsch formuliert habe.
-
Die Prozesse stehen in /proc. Falls du mehr Details wissen möchtest als nur die Prozess-ID ist das Format auch dokumentiert, das meiste solltest du dir aber auch selbst erschließen können. Die Verzeichniseinträge und Inhalte kannst du mit den (dir hoffentlich) bekannten Methoden lesen. Auch einzeln (genauer gesagt müsste ich jetzt erst einmal nachdenken, ob und wie das auch nicht-einzeln ginge). Diese Methode ist meines Wissen nach auch das, was z.B.
ps
oder ähnliche Tools benutzen (übrigens ist die Ausgabe von ps sehr wohl getrennt. Stehen schließlich newlines zwischen den Prozessen).edit: Hier auch noch der Quellcode von ps und ähnlichen Tools:
http://procps.sourceforge.net/index.html
-
Also ich möchte einfach ein Programm womit ich die Prozesse
untereinander in einer Text datei speicher.
-
system("ps -aux > textdatei");
-
Ich bastle an einer Bibliothek, die unter Anderem genau das kann.
Implementierung sieht so aus: https://github.com/Ethon/Berry/blob/master/src/linux/process_entry.cpp
-
Ich habs jetzt so gemacht !
int ShowProzess() { ofstream fout("Prozesse.txt"); return system("ps -Al > Prozesse.txt"); }
void ProzessWindow::OnClickButtonOK(wxCommandEvent &event ) { string n; ShowProzess(); ifstream fin("Prozesse.txt"); while(fin>>n && fin.ignore(1000)) { wxString mystring(n.c_str(), wxConvUTF8); textctrl->AppendText(mystring); } }
Jetzt möchte ich das es die Prozesse im TextCrl untereinander anzeigt tut es aber nicht ..... Er zeigt nur eine Zeile an fertig..
-
Das ist doch nicht dein Ernst . Kannst du eine Scherzlösung nicht als solche erkennen?
Guck dir doch wenigstens mal die Grundlagen der Linux-"System"programmierung an. Wie man mit Verzeichnissen umgeht, etc. Oder eben Boost, wie es Ethon benutzt, das kommt in C++ schöner. Und lern auch ganz allgemein die Grundlagen von C++, denn wenn ich
while(fin>>n && fin.ignore(1000))
sehe, dann weiß ich sofort, dass du hier total überfordert bist. Wenn ein Programm zu schwierig ist, dann ist es ja in Ordnung zu Fragen, aber man muss genügend Grundlagen können, um überhaupt die Antworten zu verstehen! Und diese Grundlagen zu lernen, dafür ist jeder selber verantwortlich, das kann das Forum nicht für jeden Neuling erledigen. Es ist ja nix schlimmes, nicht zu wissen, woher man Prozessinformationen bekommt, aber nach den Schlagworten in meiner ersten Antwort (Verzeichnis, Dateien, ...) hättest du eigentlich wissen müssen, was zu tun ist.
-
Hmm Mir faellt nicht einw as ich der whileschleife sagen soll wie lange die sich
bewegen soll. -.-
-
Liest du überhaupt was andere dir schreiben/sagen? Anscheinend nicht.
Und bitte, schreibe mal richtig, deine Texte sind immer furchtbar zu lesen.
-
Natürlich lese ich was ihr mir schreibt.
Nur ich bin gerade dabei die Grundlagen zu lernen von
Linux "System" programmierung .Da man beim anwenden am besten lernen
kann dachte ich an so ein Programm.Wenn ihr meint das,dass nichts wird...
Was könnt ich den sonst so programmieren ich suche ein Project.
-
Lös Fragen hier im Forum! Jeden Tag 3-4 neue Projekte, die sich schnell abschließen lassen. Und du kannst deine Ergebnisse direkt mit anderen vergleichen und falls dicke Hauer in deiner Lösung sind, bekommst du das auch mehr oder weniger unhöflich gesagt.