Hmmm. On my Unix machines, nohup actually calls sigaction() before exec()ing the process to be nohupped to ignore SIGHUP. (I don't have a Linux machine handy, but that's how it works under Solaris and OpenBSD; Solaris actually ignores SIGQUIT as well.) And that signal mask gets inherited by the exec()'d process.

Also, in both of those cases, nohup never exits; it just exec()s the new process, which is how it's able to keep its parent process be the shell (or whever called nohup) and not init, until the shell (or, again, whatever other process) exits.

It sounds, though, like you might be talking specifically about userland apps initiated by the kernel, so I'll have to default to you there.
_________________________
Bitt Faulk