On 21 August 2013 16:09, David Korn <[email protected]> wrote: > cc: [email protected] > Subject: Re: Re: [ast-developers] [patch] kill(1) |sigqueue()| fixes+|EAGAIN| > handling etc. ... / was: Re: |sigqueue()| fixes+|EAGAIN| handling etc. ... > -------- > >> Attached (as "astksh20130814_sigqueuerepeat002.diff.txt") is a patch >> which fixes (some of) the issues listed above... > > > I read over Rolands patch and while it contains useful ideas, I have > some problems with it. > > Let me go over them piece by piece. > > 1. Add -Q to pass addresses. > Currently the shell has no way of utilizing an address so there > is no present need. Currently, the value field models the > C standard and treats value as a union. However, it could treat > the field as an integer choosing the large of void* and int as > the size and pass the value that way. I would add a typedef > for this type. It would be an integral type rather than a union. > A user could do kill -q $((0x4000abc)) or just kill -q 0x4000abc to > send a pointer since optget will convert to an integer. > Programs could format the value as an address or as an int. > I think that this needs more discussion before adding -Q. > Commands already have too many options so I am reluctant to > add an option unless necessary. > > 2. Add -R to handle EAGAIN > I don't think that this is needed. EAGAIN should be handled > as it is with fork with an exponential back-off algorithm that > times out after around 30 seconds. EINTR will cause a retry > unless trapnote has pending trap or signal to process in which > case kill will fail. > > 3. Add -C to not send SIGCONT when sending a signal. I don't > see why you would want to send a signal to a stopped process > and not have it react. I believe that C-shell (the originator > of job control) always sent SIGCONT. If there is a need for > this, I could be convinced.
We do have the need. The point is to queue signals in any state, even the stopped one. The scripts we use have many worker jobs (5000+ for small cases) which work on tasks submitted via SIGRT to it and return to the stopped state after sending a SIGRT signal to return the result (or better: A number defining the result directory). Once stopped they await new instructions, again send via SIGRT. Once all tasks have been submitted to the process we want to send a SIGCONT to kick off the process once again to do it's stuff until the task queue has been drained, at which the process sends itself a SIGSTOP. The parent process receives a SIGCHLD with CHLD_STOP as notification that the process awaits new instructions. Ced -- Cedric Blancher <[email protected]> Institute Pasteur _______________________________________________ ast-developers mailing list [email protected] http://lists.research.att.com/mailman/listinfo/ast-developers
