Why do you want to "fork" the process?  If you just run it in the  
background it should have the desired effect:

<begin tst.py>
from pylab import *
x = linspace(-10,10,100) # or load data from a file.
y = sin(x)
plot(x,y)
show()
<end tst.py>

$ python tst.py&

Process remains in background running until the user closes the plot  
window, at which point it terminates.

Michael.


On 7 Jul 2008, at 2:30 PM, James K. Gruetzner wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> I'm not sure if this is the right venue for this question.  I've  
> searched the
> archives, but without success so far.  If this is covered there (or  
> elsewhere
> on the web), I'd apprciate a pointer to it so it doesn't duplicate  
> bandwidth
> here.
>
> Anyway, what I'd like to do is have a python script which reads  
> data from a
> file, displays an image/plot/whatever made from the data, and then  
> exits,
> keeping the image displayed.
>
> I'm running Fedora 8, python 2.5.1, and matplotlib 0.91.2-1.fc8  
> from the yum
> repository.   Backend is set to GTKAgg in my matplotlibrc file.
>
> My initial attempt used the "double fork" method from the python  
> cookbook:
>
> - -------------Code follows----------------------
>   if __name__ == "__main__":
>
>   #From Python Cookbook
>   try:
>     pid = os.fork()
>     if pid > 0:
>       # Exit first parent
>       sys.exit(0)
>   except OSError, e:
>     print >>sys.stderr, "fork #1 failed: %d (%s)" %(e.errno,  
> e.strerror)
>     sys.exit(1)
>
>   # Decouple from parent environment
>   #os.chdir("/")
>   os.setsid()
>   os.umask(0)
>
>   # Do second fork
>   try:
>     pid = os.fork()
>     if pid > 0:
>       # Exit from second parent; print eventual PID before exiting
>       print "Image PID %d" % pid
>       sys.exit(0)
>   except OSError, e:
>     print >>sys.stderr, "fork #2 failed:  %d (%s)"%(e.errno,  
> e.strerror)
>     sys.exit(1)
>
>   # Start the main loop to display image
>   main()
>
> - --------------END CODE--------------------------------------
>
> The main() function reads the values appropriately into the  
> variable "myarr",
> and then calls imshow and show:
>
> - ------------ Code follows -------------------
>        :
>        :
>   pylab.imshow(myarr)
>   pylab.show()
> - --------------END CODE--------------------------------------
>
> . . . and then exits.
>
> All works well until I try to kill the figure/image  by clicking on  
> the X in
> the upper-right corner.   It disappears alright, but the process  
> remains
> running, and I have to manually kill it with the kill -SIGTERM  
> <pid> command.
>
> I'd like the process to die when I close the window.
>
> I'm really an application programmer, not a system programmer, and  
> usually
> don't delve this deeply into process management, so I'm probably doing
> something extremely ignorant.  Help is appreciated.
>
> Thanks!
>
>   James
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.7 (GNU/Linux)
>
> iD8DBQFIcor8xOXthSHeGJIRAm/aAKC/SPQzocHigz2glpvtBJc0BcMU3ACfUTe0
> PM0fby8/z3YJcAj+Llb++ho=
> =NgA/
> -----END PGP SIGNATURE-----
>
>
> ---------------------------------------------------------------------- 
> ---
> Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
> Studies have shown that voting for your favorite open source project,
> along with a healthy diet, reduces your potential for chronic lameness
> and boredom. Vote Now at http://www.sourceforge.net/community/cca08
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users


-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to