|
Re: forking an external process: msg#00023gnome.gtk+.perl
On Tuesday 07 May 2002 9:04 pm, you wrote: > hi > > I want my gui to be accesable even when an external process is doing > some work. > My program does the following: > initialise the GUI > exec of a wget process > wait for it to return > do somthing to the return which will update the GUI (add rows to a > clist) > > as it is now it hangs while the wget process is running. I have tried to > fork it but it doesnt work: > sub getnews{ > $clist->clear(); > if (fork() == 0) { > exec("wget http://www.slashdot.org/slashdot.rdf -nv -q -O \ > slashdot.rdf"); > exit(0); > } > parse_xml(); > } > > what have I done wrong? the parse_xml part is only to be runned when the > exec has returned somthing As others have said all that is needed, I'll just add some problems you probabley won't know about so get confused/worried/want to kill perl when you come across them: In any perl: forked processes become zombies after they die, and send a SIGCHLD to the main process (I'm assuming unix as you are using wget) and you have to reap your zombies, this is mentioned in the 'camel' book near forking, so it should be easy to find more indepth information I would guess, if you can't find any, mail me and I'll be happy to spend some time explaining. With GTK and perl you have to use _exit() to exit a fork, due to some complex reason, otherwise you get some horrid errors about x libaries and you get all confused (at least I did). Toby |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: forking an external process: 00023, Christian Borup |
|---|---|
| Next by Date: | faking an editable clist: 00023, eichin-gtk-perl |
| Previous by Thread: | Re: forking an external processi: 00023, Christian Borup |
| Next by Thread: | drag icon for CList: 00023, lanzz |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |