🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.os.linux
Article #13

Re: Prozesse im Hintergrund weiterlaufen lassen ??

#13
From: J Wunsch
Date: Sun, 31 Dec 1995 14:40
34 lines
2257 bytes
Thomas Holubar <holubar@informatik.uni-frankfurt.de> writes:

> Wie kann ich auf einem Unix-Sytem (z.B. Linux) einen Prozess im Hintergrund
> weiterlaufen lassen auch wenn ich das kontrollierende Terminal beende ?

Das hat mit C nix zu tun, F'up gesetzt.

> Meine bisherige Idee war, per fork() einen Sohnprozess zu starten, der dann
> SIGTERM,SIGINT + SIGHUP ignoriert bzw. abfängt, aber das funktioniert leider
> nicht - jedenfalls nicht wie gewünscht.

Du kannst entweder ihn mit nohup starten und in den Hintergrund
schicken, das ist der klassische Weg.

Alle Systeme mit job control (also auch Linux) packen einen Hinter-
grundprozeß automatisch in eine Prozeßgruppe, die kein SIGHUP bekommt.
Folglich lebt er beim Ausloggen weiter, zumindest wenn die Shell
job control macht (csh, bash, tcsh, ksh machen das).

Willst Du das aus einem Programm heraus erledigen, also einen echten
,Dämon' bauen, so bietet sich dafür setsid(2) an.  Du forkst einen
neuen Prozeß, ordnest diesen dann mittels setsid() einer neuen Session
zu, und beendest den Vordergrundprozeß.  Da sich solch Code schwer
debuggen läßt, vergiß nicht, eine -d Option vorzusehen, mit der Du das
fork/setsid abklemmen kannst.  Der Kindprozeß sollte übrigens alle
nicht benötigten Deskriptoren schließen.  Da er kein ctty hat, muß er
seine Ausgaben über syslog(3) loggen.  Direkte Ausgaben sind nur in
der nicht-fork-Variante mit -d sinnvoll.

-- 
cheers, J"org

joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
Technical Details
Message-ID: <4c67db$s31@uriah.heep.sax.de>
Path: arc1-ca.pugleaf.net!uriah.heep!news
References: <4c5j69$6nk@zeus.rbi.informatik.uni-frankfurt.de>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!uriah.heep!news
From: j@uriah.heep.sax.de (J Wunsch)
Newsgroups: de.comp.os.linux,de.comp.os.unix,de.comp.lang.c,de.comp.lang.c++
Subject: Re: Prozesse im Hintergrund weiterlaufen lassen ??
Followup-To: de.comp.os.linux,de.comp.os.unix
Date: 31 Dec 1995 14:40:43 GMT
Organization: Private BSD site, Dresden
Message-ID: <4c67db$s31@uriah.heep.sax.de>
References: <4c5j69$6nk@zeus.rbi.informatik.uni-frankfurt.de>
Reply-To: joerg_wunsch@uriah.heep.sax.de (Joerg Wunsch)
NNTP-Posting-Host: localhost.heep.sax.de
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Newsreader: knews 0.9.3