home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / windows / x / 14248 < prev    next >
Encoding:
Internet Message Format  |  1992-07-23  |  2.2 KB

  1. Path: sparky!uunet!usc!sol.ctr.columbia.edu!destroyer!ubc-cs!uw-beaver!micro-heart-of-gold.mit.edu!bu.edu!dartvax!fluent!creare!inb
  2. From: inb@creare.COM (Ian Brown)
  3. Newsgroups: comp.windows.x
  4. Subject: Re: fork()ing in an event loop??
  5. Message-ID: <13398@creare.COM>
  6. Date: 22 Jul 92 18:07:55 GMT
  7. References: <1992Jul8.181508.29548@tc.cornell.edu> <1992Jul14.202317.10570@thunder.mcrcim.mcgill.edu>
  8. Reply-To: inb@creare.UUCP (Ian Brown)
  9. Organization: Creare Inc., Hanover, NH
  10. Lines: 36
  11.  
  12. In article <1992Jul14.202317.10570@thunder.mcrcim.mcgill.edu> mouse@thunder.mcrcim.mcgill.edu (der Mouse) writes:
  13. :>> I have a grapher that gets input from stdin.  Once it has been told
  14. :>> to plot, it opens an window, and plots.  Then of course I go into an
  15. :>> event loop that processes expose events.  The problem is, I want to
  16. :>> process these events at the same time (and in the background) as I
  17. :>> get more lines of input from stdin.  I think what I need to do is
  18. :>> fork(), but I don't really know how to do it.
  19. :>
  20. :>If you're using Xt, then you just use XtAppAddInput to add file
  21. :>descriptor 0 as a source of input, then have its callback read and
  22. :>process the lines.
  23.  
  24. Note that this doesn't always work very well.  On some systems, your event
  25. handler will be called constantly, regardless of whether or not any new data is
  26. ready to be read on stdin.  If the code needs to be portable, an alternative
  27. would be to use a timer (XtAppAddTimeout) and perform non-blocking I/O to
  28. actually read the file (you could do the non-blocking I/O in the handler for
  29. XtAppAddInput, but you will effectively have a busy loop.)
  30.  
  31. I found out what a problem this can be when trying to port a routine that used
  32. XtAppAddInput from an HP-UX machine (where it worked correctly) to a Sun
  33. machine (where it didn't).  Since my code was expecting to find something to
  34. read, it would lock up in the event handler when nothing was available.
  35.  
  36. In my case, I was using pipes for the I/O.  If you aren't using pipes, this may
  37. or may not apply (I don't remember offhand whether this is documented in the X
  38. toolkit books or under select() and don't feel like searching unless someone
  39. really wants me to.)
  40.  
  41.  
  42.  
  43.  
  44.  
  45. -- 
  46. Ian Brown
  47. inb@creare.com
  48.