chris@mimsy.UUCP (Chris Torek) (05/23/89)
In article <SCP.89May22172024@raven.lanl.gov> scp@raven.lanl.gov (Stephen Pope) writes: >Well, as long as we're on the subject, I'm curious in general how >a process can know whether it is in the foreground or background. `foreground' and `background' mean different things in different shells. In sh: $ foo & runs `foo' with input connected to /dev/null---read-select will say `yes' (if you have select) and reading will find EOF. In csh, with job control, % foo & [1] 1234 runs `foo' with its process group differing from that of its control terminal. (If input has not been redirected, it comes from the control terminal.) So: if the input is not a terminal, the process is running in background or has had its input redirected. If the input is a terminal, the process is in the foreground if and only if its process group matches that of the control terminal. A process never moves from foreground to background without warning: it must first stop. But it is possible (and not uncommon) for a process to move from background to foreground: % %f foo A foreground process can tell when it loses control, but a background process can only poll to see if it has gained it. (To make this more efficient, it might do this only when select-for-read is true.) -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163) Domain: chris@mimsy.umd.edu Path: uunet!mimsy!chris