The documentation for openInOut warns that pipes only hold 4096 bytes. I'm not a C expert but I think this is pretty outdated on pretty much any modern system. Using any modern alternative to expand or remove the buffer size limit on openInOut, specifically so arbitrarily large amounts can be written/read, would be great.