I have just started this myself, but my code looks like this:
pid = fork() /* This does NOT work on Windows */
if pid >0 then do
call on halt name nohalt
say "In the child process"
signal on halt
say "In the parent process"
Somehow both end up getting run. I have two different CTRL-C handlers because CTRL-C will be seen by both. Note that fork(), at least the version of Regina I run, does NOT work on Windows (always returns '1' which is reported in the doc to indicate "not available"). I've also found that both the parent and child need to flow out to a common endpoint (i.e., no returns or exits in one branch vs. the other).