Apparently writev() imposes a limit on the vector size.  Work around that.  Not sure why libc doesn't already do this.