use fork write_fifo and read_fifo use it. needs test