Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Minor wait behaviour thing

I'm not sure if this is even worth remarking on...

Here's a trivial script to start four jobs in the background and wait for
all four to finish.

  sleep 10 &
  echo Job 1 started, pid $pid1
  sleep 15 &
  echo Job 2 started, pid $pid2
  sleep 5 &
  echo Job 3 started, pid $pid3
  sleep 20 &
  echo Job 4 started, pid $pid4
  wait $pid1
  echo Job 1 finished
  wait $pid2
  echo Job 2 finished
  wait $pid3
  echo Job 3 finished
  wait $pid4
  echo Job 4 finished

As you can see, job 3 will finish before jobs 1 and 2.  Since the PID isn't
stored --- we don't know how long we'd have to keep it, so it would just
clutter up the shell --- the wait skips it.  However, it prints out a
message; here's the complete sequence:
  Job 1 started, pid 8330
  Job 2 started, pid 8331
  Job 3 started, pid 8332
  Job 4 started, pid 8333
  Job 1 finished
  Job 2 finished
  ./wait4:wait:25: pid 8332 is not a child of this shell
  Job 3 finished
  Job 4 finished
which is, at that point, correct, but confusing.  sh and ksh don't print a
message.  I wonder if it's more trouble than it's worth?

Peter Stephenson <pws@xxxxxxx>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070

The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
If you received this in error, please contact the sender and 
delete the material from any computer.

Messages sorted by: Reverse Date, Date, Thread, Author