[signal] use _exit instead of non-reentrant exit

By replacing a library it currently uses, a SIGILL is sent to fcitx And followed by a SIGSEGV. After that, SIGTERM can't terminate it. I suspect it got stuck in the `exit` call. 

Whatever, `exit` should not be used in a signal handler.