Segfaults, other signals, fork, etc

I have this code:

Process.waitpid(fork { exec “stuff” })

Outside of the fork, how can i detect various signals sent to stuff?
SIGSEV, etc.

On 21.04.2007 18:03, Elliott H. wrote:

I have this code:

Process.waitpid(fork { exec “stuff” })

Outside of the fork, how can i detect various signals sent to stuff?
SIGSEV, etc.

IIRC you can detect signals only from within the process that receives
those signals. So “stuff” would have to do it. If you want to
interfere with this you need to make sure that whoever sends those
signals sends them to the parent or some kind of proxy which can do
anything with them (including forwarding to the child).

I believe the only way to influence this from the outside is when
signals are set to “ignore”. The child will inherit the ignoring even
after exec.

Kind regards

robert

Robert K. wrote:

IIRC you can detect signals only from within the process that receives
those signals. So “stuff” would have to do it. If you want to
interfere with this you need to make sure that whoever sends those
signals sends them to the parent or some kind of proxy which can do
anything with them (including forwarding to the child).
Would it be possible with Kernel#system()?

Kind regards

robert

Hi,

At Sun, 22 Apr 2007 01:03:51 +0900,
Elliott H. wrote in [ruby-talk:248642]:

I have this code:

Process.waitpid(fork { exec “stuff” })

Outside of the fork, how can i detect various signals sent to stuff?
SIGSEV, etc.

You can detect how the child process exited with $?, or waitpid2.

$ ruby -e ‘pid = fork {exec “sleep 10”}; sleep 0.1;
Process.kill(“TERM”, pid); p Process.waitpid2(pid)’
[23366, #<Process::Status: pid=23366,signaled(SIGTERM=15)>]