Daemons und Kommunikation zwischen Programmen

devkid

devkid

Tadaa!
Ich hätte da mal 2 Fragen:
1. Wie kann ich mir nen Daemon für z.B. nen Server schreiben? Also, damit ich dann "foinfod"(selbstgeschrieben) aufrufe, das Programm selbst im Hintergrund läuft und man hinterher wieder in die Konsole zurück kommt.
2. Wie kann ich mit dem dann laufenden Programm kommunizieren? Wie müsste dann der Code in dem Programm aussehen, das ich ansprechen will(also der Daemon), wie in dem, mit dem es angesprochen werden soll(z.B. ein Konfigurations-Proggy)?

Thx im vorraus.
 
Hi, so richtig verstehe ich deine frage nicht, aber falls du meinst, daß dein selbstgeschriebenes "foinfod" ständig im Hintergrund laufen soll, dann bietet sich 'init' dafür an. Damit kann man prozesse am laufen halten, die unbedingt laufen müssen.
 
Also nochmal:
1. Wie kann ich mir das Programm "foinfod" schreiben, welches das Programm "foinfo" ausführt und es im Hintergrund laufen lässt. (also so ähnlich wie /etc/init.d/apache2 mit Parameter "start")
2. Wie kann ich mit dem ausgeführten Programm "foinfo" kommunizieren. (Pipes?)
 
InterProcessComunication solltest du dir da anschauen! ich würde gleich IP benutzen dann ist es auch gleich netzfähig!
startproc hilft irgentein programm im hintergrund laufen zu lassen.
 
Zuletzt bearbeitet:
Zu InterProcessComunication hab ich so ziemlich gar nix gefunden(Google - 16 Ergebnis, nur Müll). Und startproc ist doch eigentlich ein Programm, wird in C/C++ nicht immer davon abgeraten, ein externes Programm aufzurufen?
 
Das mit dem IPC war genau das, was ich gesucht hab, thx! Das mit den Start-Scripts hab ich jetzt auch kapiert, nur noch eine Frage: wie kann ich einstellen, dass nun das Programm "foinfo" beim hochfahren automatisch ausgeführt wird(also man nicht erst "/etc/init.d/foinitd start" nach einem Login eingeben muss)?
 
schau in die rc.0-9 vrezeichnisse einfach ein link in die runlevel legen S==start K==stop

das ist höchst distri abhänig!
 
Zuletzt bearbeitet:
Das mit dem IPC war genau das, was ich gesucht hab, thx! Das mit den Start-Scripts hab ich jetzt auch kapiert,...

...schoen, dann brauch dir keiner mehr beizubringen wie man die Konsole nach starten eines Programmes wieder freigibt...also das, was die Programme tun mit denen du dein Programm aufrufen sollst...tztztz...

devkid schrieb:
2. Wie kann ich mit dem ausgeführten Programm "foinfo" kommunizieren. (Pipes?)
...IPC ist schon etwas praktisches. Erwaehnenswert waere auch D-BUS, UNIX-Sockets, oder eine Named-Pipe...eine Pipe im eigentlichen Sinne macht in diesem Context meiner Ansicht nach keinen Sinn - ja um ggf. zwischen Threads/Prozessen deines Programmes (also nicht von aussen) zu kommunizieren.

devkid schrieb:
wie kann ich einstellen, dass nun das Programm "foinfo" beim hochfahren automatisch ausgeführt wird(also man nicht erst "/etc/init.d/foinitd start" nach einem Login eingeben muss)?
...stimme b00 zu, ist hoechst distro-Abhaengig...sollte aber immer etwas in Bezug auf den Init-Prozess sein (initscript,rcscript,rc-script). Am besten du liesst dir mal die Manpage zu init durch, und faengst dann oben in der Inittab an...irgendwo entlang dieser Linie kannst du dann dein Prog einbauen...;).

...im grossen und ganzen wuerde ich sagen du bist Linux-Neuling, packst die Sache aber richtig an...nur Mut.
 
...IPC ist schon etwas praktisches. Erwaehnenswert waere auch D-BUS, UNIX-Sockets, oder eine Named-Pipe...eine Pipe im eigentlichen Sinne macht in diesem Context meiner Ansicht nach keinen Sinn - ja um ggf. zwischen Threads/Prozessen deines Programmes (also nicht von aussen) zu kommunizieren.
Ich nehm jetzt named pipes, die sind wirklich genau das, was ich gesucht hab :D .
...im grossen und ganzen wuerde ich sagen du bist Linux-Neuling, packst die Sache aber richtig an...nur Mut.
Hast recht, ich bin Linux-Neuling, aber ich hoffe, dass ich in der Community ein bisschen Hilfe bekomme :brav: .
Jetzt hab ich noch eine Frage: wie kann ich in C/C++ Prozesssignale(z.B. TERM) abfangen? Muss ich da ne bestimmte Funktion für schreiben?
 
Mit sigset meldest du eine Funktion an, die bei Eintreten eines bestimmten Signals zur Signalbehandlung dienen kann. Unter "man sigset" werden auch die anderen nuetzlichen Funktionen wie z. B. sighold und sigignore erlaeutert. SIGSTOP und SIGKILL koennen nicht behandelt werden.
 
Zuletzt bearbeitet:

Ähnliche Themen

Standard- Java Programm im Hintergrund (Pipes, Ports oder Argumente)

Programm start mit null oder einem parameter und ein paar zahlen

Parallelport beschreiben mit /dev/lp0

Welches Programm läuft aktiv im Vordergund?

[HowTo] TeamSpeak 2 - RC2 - Server (Deutsch/Englisch)

Zurück
Oben