signals have to be unblocked for exec

Also refactor signalfd creation
use pipe2 for CLOEXEC, cleanup should close pipe