> The errno of read/write being overwritten is unfortunate ... so I'm not worried about it.

Just this morning I was *sure* that libnative would never see EAGAIN. Just a week ago I was *sure* that `kill` would fail if a process had died. Please handle errno(), defensive programming I've found is far better than assuming everything will go right.

> I don't believe this will cause an infinite loop, unless there's some way the system can return

In the spirit of defensive programming, please remove the loop. The code is no less readable, and failing in an infinite loop (albeit rarely) is arguably much worse than returning an error from print. This is not an iron-clad solution against failing prints, this is simply trying to alleviate a bug which has been sporadically seen.