Einstieg in Prozessprogrammierung

Post Reply
Message
Author
maxip
Posts: 1
Joined: 07. Feb 2005 14:29

Einstieg in Prozessprogrammierung

#1 Post by maxip »

ich möchte in reinem C ein Programm schreiben, dass von aussen gesteuert wird, z.B. über eine MySQL Datenbank oder über Dateien oder sonstwie (kann man einem laufendem Prozess Nachrichten schicken mit PHP ?).

Ich bräuchte einen Denkanstoss bzw. ein paar hilfreiche Links.

Ich möchte also ein Prozess haben, der die ganze zeit läuft, und wenn was zu tun ist, dann arbeitet er den Auftrag ab und ansonsten soll er im Leerlauf sein und möglichst keine oder sehr wenig ressourcen fressen.

Wie mache ich sowas ?

Ich möchte jetzt nicht unbedingt eine komplette Anleitung, sondern nur ein grobes Schema, wie man das von mir gewünschte in C und unter Linux umsetzt.

Reicht es, das Programm als Hintegrundprozess zu starten ?
Mus ich dann im Programm einfach eine Schleife machen ?




cya max

squeez
Posts: 9
Joined: 24. Jun 2004 17:05
Location: CH
Contact:

#2 Post by squeez »

tach

Interessante Idee.

Dazu solltest du dir ein Protokoll entwerfen, in welchem die Kommunikation mit dem Job Prozess (ich moechte ihn mal so nennen) definiert wird.
Dabei ist sehr wichtig, dass du bereits im Protokoll selbst auf Sicherheitsaspekte Wert legst. Dh nicht alles soll erlaubt sein, und es soll Einschraenkungen fuer User geben.
Die Kommunikation sollte sinnvollerweise ueber Sockets erfolgen (Unix Domain Sockets oder BSD Sockets - je nach dem ob lokal oder remote).

Fuer die "Stilllegung" kannst du den Systemcall nice() verwenden ( man 2 nice ).

Vielleicht machst du uns mal ein Beispiel was ein solcher Job Prozess denn genau machen soll / darf.

greetz by
squeez
[nothing]

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

#3 Post by hjb »

Hi,
squeez wrote: Dazu solltest du dir ein Protokoll entwerfen, in welchem die Kommunikation mit dem Job Prozess (ich moechte ihn mal so nennen) definiert wird.
Dabei ist sehr wichtig, dass du bereits im Protokoll selbst auf Sicherheitsaspekte Wert legst. Dh nicht alles soll erlaubt sein, und es soll Einschraenkungen fuer User geben.
Die Kommunikation sollte sinnvollerweise ueber Sockets erfolgen (Unix Domain Sockets oder BSD Sockets - je nach dem ob lokal oder remote).
soweit OK...
squeez wrote: Fuer die "Stilllegung" kannst du den Systemcall nice() verwenden ( man 2 nice ).
das ist totaler Blödsinn, sorry. Ein Prozeß, der mit select oder poll auf Eingaben wartet, braucht nur dann die CPU, wenn er einen Auftrag bekommt, etwas zu tun. Man sollte einfach ein select mit unendlichem Timeout oder mit einigen ms Timeout machen und darum herum eine Schleife basteln.

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

squeez
Posts: 9
Joined: 24. Jun 2004 17:05
Location: CH
Contact:

#4 Post by squeez »

tach
hjb wrote: das ist totaler Blödsinn, sorry. Ein Prozeß, der mit select oder poll auf Eingaben wartet, braucht nur dann die CPU, wenn er einen Auftrag bekommt,...
hjb
Nun, das sind zwei voellig verschiedene Dinge.
Wenn er mit Sockets arbeitet, so wird er blockierend arbeiten. Also hat er diesen Effekt schon alleine durch die Verwendung der Sockets (read alleine genuegt dabei, allenfalls select() bei mehreren Sockets).
Soviel mal zum Bloedsinn ^^
Der zweite Punkt ist, dass die wahrscheinliche Verwendung von Threads (was bei einem solchen Job Prozess sehr viel Sinn machen wuerde) eine Reduktion der Rechenzuweisung sinnvoll macht. So. Das ist dann die Aufgabe von nice().

Leider haben wir noch immer zu wenig Angaben darueber, was das fuer Auftraege sein sollten, um von Bloedsinn oder nicht sprechen zu koennen.

schoenen Tag noch...

greetz by
squeez
[nothing]

skolem23

CORBA und ICE

#5 Post by skolem23 »

also ich wuerde kein eigenes Protokoll entwerfen....., socket spass wird nerven ohne enden kosten....

muss es unbedingt C sein, waere C++ nich auch OK??

Jedenfalls kling dies nach einem typischen Job fuer CORBA, der Nachteil is, dass man da erst mal das C++ mapping lernen muss, dies wiederum is eher nunja "angestaubt" (nach 1Jahr CORBA falle ich immer noch auf diverse Fallen rein...). Gute Erfahrungen habe ich mit omniORB gemacht, und haende weg von TAO solange du kein RT-CORBA brauchst


Aber es gibt da ja noch Ice, ne art modernes CORBA, da kannst du deine C++ Prozess (Server) auch mit PHP, Python sogar mit C# steuern..., das alles unterstuetzt auch ssl

Post Reply