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

Re: bug in zsh wait builtin - rhbz#1150541



On Oct 21,  9:02pm, Peter Stephenson wrote:
}
} There's an explanatory note in the latest POSIX standard about this,
} quoted below.  It seems that the shell is basically required to remember
} all background processes indefinitely (up to not very helpful get out
} clauses).  As a baseline, CHILD_MAX here is 1024.  This probably needs
} to be a special hash.

Since you've bothered to look this up ... does it go on to say what the
shell is supposed to do if PIDs roll over so that a new background job
gets the same $! as some previous one?  Is "kill" supposed to work the
same way?  (Do we need to send an inquiry to austin-group?  If so, you
will have to do it, my ability to post there has been messed up for a
long time.)

Note also that this is partly handled by the POSIX_JOBS option:

     When the option is set, it becomes possible to use the wait
     builtin to wait for the last job started in the background (as
     given by $!) even if that job has already exited.  This works even
     if the option is turned on temporarily around the use of the wait
     builtin.

I would say that any further change made for this should also be under
the auspices (so to speak) of POSIX_JOBS.

} Historical implementations of interactive shells have discarded the exit
} status of terminated background processes before each shell prompt.

Precisely.  This is not a "bug," as zsh's implementation predates 2008.
It's a POSIX non-conformity, but zsh has quite a few of those remaining,
I think.

-- 
Barton E. Schaefer



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