Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11793[/thread]

Prozess Kommunikation

Leser: 3


<< >> 6 Einträge, 1 Seite
blue-dev
 2008-05-12 17:43
#109620 #109620
User since
2008-03-22
4 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich schreibe im Moment an einem Internet Cafe für Linux in C, allerdings hab ich mich gefragt ob ich nicht lieber die Zeit die für die Verwaltung des Speichers draufgeht für bessere Sachen nutzen, und einfach alles in Perl schreiben sollte.

Nun frage ich mich, ob es unter Perl die Möglichkeit gibt das Prozessinstanzen sich untereinander überwachen können.
Das heißt ich starte das Programm, es erstellt selbst weitere Instanzen von sich, und jede überprüft von sich aus ob auch alle anderen verfügbar sind.
Ist eine beendet wird von einem der anderen Prozesse automatisch eine neue gestartet und so weiter.

Kann ich so etwas mit Perl realisieren?
DanielH
 2008-05-12 19:31
#109623 #109623
User since
2007-11-15
54 Artikel
BenutzerIn
[default_avatar]
Klar kannst du sowas mit Perl realisieren.

Du musst einfach nur die Prozess IDs den anderen Prozessen zur Verfügung stellen, und dann eben überprüfen, ob alle Prozesse noch laufen.

Am einfachsten wäre es wohl beim Start eines Prozesses eine PID-file in einem bestimmten Verzeichniss zu erstellen, welche von allen Prozessen ausgelesen wird.


Quote
[...] jede überprüft von sich aus ob auch alle anderen verfügbar sind.


Ich würd' eher einen Prozess-Manager starten, der dann alle anderen Prozesse startet und überwacht. Zur Sicherheit dann vielleicht noch einen Prozess, der nur den Prozess-Manager überwacht.

Schau dir mal CPAN:POE und CPAN:POE::Wheel::Run an. Ich denke, das ist genau was du brauchst. Dauert zwar etwas, bis man sich in POE eingearbeitet hat, aber es lohnt sich auf jeden Fall ;)
murphy
 2008-05-12 21:41
#109629 #109629
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
blue-dev+2008-05-12 15:43:40--
[...] ich schreibe im Moment an einem Internet Cafe für Linux in C, allerdings hab ich mich gefragt ob ich nicht lieber die Zeit die für die Verwaltung des Speichers draufgeht für bessere Sachen nutzen [...] sollte.


Ja, zum Beispiel dafür auch für C eine vernünftige Speicherverwaltung zu installieren: Müllsammler für C und C++ ;-)

Quote
[...] Das heißt ich starte das Programm, es erstellt selbst weitere Instanzen von sich, und jede überprüft von sich aus ob auch alle anderen verfügbar sind.
Ist eine beendet wird von einem der anderen Prozesse automatisch eine neue gestartet und so weiter.


Wenn Du es wirklich so kompliziert dezentral lösen möchtest, könnte es sinnvoll sein, eine Bibliothek für verteilte Rechenjobs zu verwenden, die dafür Hilfsmittel mitbringt. Ich würde in dem Fall PVM bzw. von Perl aus CPAN:Parallel::Pvm empfehlen.

edit: Mit PVM kann man das, was Du erreichen möchtest über ein komplettes Netzwerk hinweg erledigen. Wenn es nur um Teile eines einzelnen Programmes geht, ist POE in Perl wohl das bessere Werkzeug. Da Du aber schreibst, es gehe um Software für ein Internetcafe, vermute ich, dass eine netzwerkweite Lösung interessant ist.

Quote
Kann ich so etwas mit Perl realisieren?


Klar, was für eine Frage – mit Perl geht schließlich fast alles ;-)
When C++ is your hammer, every problem looks like your thumb.
DanielH
 2008-05-12 22:17
#109631 #109631
User since
2007-11-15
54 Artikel
BenutzerIn
[default_avatar]
Quote
Mit PVM kann man das, was Du erreichen möchtest über ein komplettes Netzwerk hinweg erledigen. Wenn es nur um Teile eines einzelnen Programmes geht, ist POE in Perl wohl das bessere Werkzeug.


Mit CPAN:IKC (Inter-Kernel Communication) kann man sowas auch mit POE netzwerkweit realisieren ;)
pktm
 2008-05-12 22:33
#109632 #109632
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
DanielH+2008-05-12 20:17:12--
Quote
Mit PVM kann man das, was Du erreichen möchtest über ein komplettes Netzwerk hinweg erledigen. Wenn es nur um Teile eines einzelnen Programmes geht, ist POE in Perl wohl das bessere Werkzeug.


Mit CPAN:IKC (Inter-Kernel Communication) kann man sowas auch mit POE netzwerkweit realisieren ;)


Was ist besser (geeignet)?
http://www.intergastro-service.de (mein erstes CMS :) )
DanielH
 2008-05-12 23:15
#109634 #109634
User since
2007-11-15
54 Artikel
BenutzerIn
[default_avatar]
pktm+2008-05-12 20:33:37--
Was ist besser (geeignet)?


Ich hab zwar noch nie etwas mit PVM gemacht, deiner Frage zu folge würde ich allerdings auf PVM tippen ;)
<< >> 6 Einträge, 1 Seite



View all threads created 2008-05-12 17:43.