Support multiple backends and add alloc backend

os.Interrupt is the portable alias to SIGINT. If you meant if it's a good idea to register for SIGINT, I say it's very convenient when running at the shell.