Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: Linux/Unix ::  Prozesse einzelnd einlesen !     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Cho++
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2011
Beiträge: 188
Beitrag Cho++ Mitglied 14:06:05 29.01.2012   Titel:   Prozesse einzelnd einlesen !            Zitieren

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 !

_________________
no risk no fun!
C++ Forumbot
Forumbot

Benutzerprofil
Anmeldungsdatum: 29.02.2004
Beiträge: 16160
Beitrag C++ Forumbot Forumbot 14:36:51 29.01.2012   Titel:              Zitieren

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.

_________________
Besuchen Sie unsere Bücherecke.
http://www.c-plusplus.de/bucher.php
Mit jeder Bestellung unterstützen Sie das Forum.
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 13604
Beitrag SeppJ Moderator 14:43:09 29.01.2012   Titel:              Zitieren

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"?


Zuletzt bearbeitet von SeppJ am 14:44:53 29.01.2012, insgesamt 1-mal bearbeitet
Cho++
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2011
Beiträge: 188
Beitrag Cho++ Mitglied 15:05:44 29.01.2012   Titel:              Zitieren

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.

_________________
no risk no fun!
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 13604
Beitrag SeppJ Moderator 15:55:32 29.01.2012   Titel:              Zitieren

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


Zuletzt bearbeitet von SeppJ am 15:57:04 29.01.2012, insgesamt 2-mal bearbeitet
Cho++
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2011
Beiträge: 188
Beitrag Cho++ Mitglied 17:29:44 29.01.2012   Titel:              Zitieren

Also ich möchte einfach ein Programm womit ich die Prozesse
untereinander in einer Text datei speicher.

_________________
no risk no fun!
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 13604
Beitrag SeppJ Moderator 18:13:59 29.01.2012   Titel:              Zitieren

C/C++ Code:
system("ps -aux > textdatei");
C/C++ Code:
system("ps -aux > textdatei");
C/C++ Code:
system("ps -aux > textdatei");
Ethon
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.01.2011
Beiträge: 1114
Beitrag Ethon Mitglied 12:48:32 30.01.2012   Titel:              Zitieren

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
Cho++
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2011
Beiträge: 188
Beitrag Cho++ Mitglied 10:14:41 31.01.2012   Titel:              Zitieren

Ich habs jetzt so gemacht !
Code:
int ShowProzess()
{
    ofstream fout("Prozesse.txt");
    return system("ps -Al > Prozesse.txt");
}
Code:
int ShowProzess()
{
ofstream fout("Prozesse.txt");
return system("ps -Al > Prozesse.txt");
}
Code:
int ShowProzess()
{
    ofstream fout("Prozesse.txt");
    return system("ps -Al > Prozesse.txt");
}


C/C++ Code:
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
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);
   }
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
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);
}
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
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..

_________________
no risk no fun!
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 13604
Beitrag SeppJ Moderator 12:57:51 31.01.2012   Titel:              Zitieren

Das ist doch nicht dein Ernst :eek: . 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.


Zuletzt bearbeitet von SeppJ am 12:58:23 31.01.2012, insgesamt 1-mal bearbeitet
Cho++
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2011
Beiträge: 188
Beitrag Cho++ Mitglied 14:50:12 31.01.2012   Titel:              Zitieren

Hmm Mir faellt nicht einw as ich der whileschleife sagen soll wie lange die sich
bewegen soll. -.-

_________________
no risk no fun!
Cybertec
Mitglied

Benutzerprofil
Anmeldungsdatum: 08.12.2008
Beiträge: 463
Beitrag Cybertec Mitglied 15:19:57 31.01.2012   Titel:              Zitieren

Liest du überhaupt was andere dir schreiben/sagen? Anscheinend nicht.

Und bitte, schreibe mal richtig, deine Texte sind immer furchtbar zu lesen.
Cho++
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2011
Beiträge: 188
Beitrag Cho++ Mitglied 17:35:11 31.01.2012   Titel:              Zitieren

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.

_________________
no risk no fun!
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 13604
Beitrag SeppJ Moderator 19:39:45 31.01.2012   Titel:              Zitieren

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.
C/C++ Forum :: Linux/Unix ::  Prozesse einzelnd einlesen !   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.