1) fix off by one bug during read() 2)fire_read() will send hex string instead of binary
3) call close(master) in new thread 4) set/restore signal handler for SIGINT
5) chdir($HOME) for the child process