Article View: de.comp.os.linux
Article #80fork/exec frage (programming)
From: Herbert Rosmanith
Date: Sat, 25 Nov 1995 00:00
Date: Sat, 25 Nov 1995 00:00
45 lines
2699 bytes
2699 bytes
hi, hab da ein kleines problem. ich moechte den output eines programmes an "less" umleiten. das ist ja kein problem, einfach "prog | less". nun moechte ich aber nicht dauernd "prog | less" eintippen. ich hole mir daher die variable "PAGER" und stopfe mit fork/pipe/dup/exec den output meines programmes in "PAGER". funktionieren tut das so, dass ich nach main() abfrage, ob PAGER==NULL und wenn ja, fuehre ich das eigentliche programm aus. wenn nicht, forke() ich und fuehre das prog. noch mal aus, diesmal mit PAGER=NULL, und zwar mit exec() im child process. im parent process allerdings mache ich jetzt ein exec() auf PAGER. das funktioniert auch soweit wirklich. ich habe nur ein problem: wenn der output meines programmes wirklich *recht* lange wird, und ich "PAGER" beende, *bevor* das gefork()te child fertig ist, dann erbt init dieses child. es ist aber voellig nutzlos, dass das passiert. mir waere lieber, wenn das child auch terminiert, wenn der parent terminiert. dummerweise kann ich aber dem child kein signal() mehr schicken, weil ich ja schon ein exec() auf PAGER gemacht und keine kontrolle mehr ueber den ablauf habe. gibt es eine (einfache) moeglichkeit, dass der child terminert, anstatt vom init geerbt zu werden ? (ich koennte mir hoechstens vorstellen, die programmlogik zu aendern, also kein exec(PAGER) zu machen, sondern zu fork()en und damit noch immer die kontrolle zu behalten. aber dann haette ich drei prozesse statt zwei. gefaellt mir nicht....) /herp -- ------------------------------------------------------------- Microsoft Network is prohibited from redistributing this work in any form, in whole or in part. Copyright, Herbert Rosmanith, 1995. License to distribute this post is available to Microsoft for US$1,000, or equivalent local currency. Posting without permission constitutes an agreement to these terms. Please send notices of violation to herp@wildsau.idv.uni-linz.ac.at, and Postmaster@microsoft.com
Technical Details
Message-ID:
<497vq8$e8v@alijku06.edvz.uni-linz.ac.at>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit X-Google-Thread: 10e2b3,82de76ef8e49d740,start X-Google-Attributes: gid10e2b3,public X-Google-Thread: 13f44d,82de76ef8e49d740,start X-Google-Attributes: gid13f44d,public X-Google-Thread: 1101c9,82de76ef8e49d740,start X-Google-Attributes: gid1101c9,public X-Google-Thread: 109314,82de76ef8e49d740,start X-Google-Attributes: gid109314,public From: herp@wildsau.idv.uni-linz.ac.at (Herbert Rosmanith) Subject: fork/exec frage (programming) Date: 1995/11/25 Message-ID: <497vq8$e8v@alijku06.edvz.uni-linz.ac.at> X-Deja-AN: 120086955 organization: Johannes Kepler University Linz newsgroups: de.comp.os.linux,at.linux,at.fido.linux,unilinz.linux