kschwab found out why ctrl-c kills the program (because of the long sleep, sleep(1000)),
While it should interrupt the sleep, it shouldn't cause it to exit; the message from the SIGINT handle should be printed. In your question, you said the message wasn't being printed.
If you want an uninterruptible sleep (i.e. one that resumes after handling a signal),
sub uninterruptible_sleep { my $sleep_until = time() + $_[0]; while (1) { my $time_left = $sleep_until - time(); return if $time_left <= 0; sleep($time_left); } }
I have changed perlargv[i+3] to perlargv[i+4] so that -- is not overwritten.
Fixed. I originally had -e1 as one argument (as I wold write it on the command line), but forgot to adjust the offset when I split them into two arguments.
In reply to Re^3: Pass signals and argv from C to embedded Perl
by ikegami
in thread Pass signals and argv from C to embedded Perl
by bliako
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |