Jeff Clites <[EMAIL PROTECTED]> wrote:
> But anyway, I thought the call to Parrot_sigaction(SIGINT, ...) inside
> of Parrot_init_signals() was just for testing purposes anyway.
It's currently of course for testing only, w/o much usage or even
correctness, and it's linux only for now. But - as Dan did say - the
plan for Parrot is to install signal handlers by default.
As ponie isn't running a Parrot ops-loop it never sees the generated
exit event. For now there are two workarounds:
a) disable the Parrot_sigaction line
b) check for Parrot events
static int
do_exit(int code, void *interp)
{
_exit(code);
}
static opcode_t*
run( Parrot_Interp interpreter, opcode_t *cur_op, opcode_t *start)
{
...
Parrot_on_exit(do_exit, (void*)interpreter);
while (count--) {
if (! (count & 0xfff)) {
Parrot_do_check_events(interpreter, NULL);
printf(".");
fflush(stdout);
}
make_a_pmc(interpreter);
}
...
This is a snipped from the stress example program I posted some days ago
with an additional check if events are to be handled. Both functions
might not be in the extension interface[1].
Signals are converted to Parrot events and in the case of a program
termination signal get broadcasted to all running interpreters.
[1] BTW: Why does Ponie use the rather limited extension interface?
> JEff
leo