Article View: de.comp.os.linux
Article #13Re: Prozesse im Hintergrund weiterlaufen lassen ??
From: J Wunsch
Date: Sun, 31 Dec 1995 14:40
Date: Sun, 31 Dec 1995 14:40
34 lines
2257 bytes
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!newsReferences:
<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