A fix to your problem (write says it has written N characters, but has actually written less than N because of an interrupt) is to put a sighold(SIGINT)/sigrelse(SIGINT) around the write. This is admittedly gross, but it does work. If you are using stdio, you need to put it inside flsbuf(). =Spencer