`dprintf`: print formatted text directly to a file descriptor =============================================================== --- date: "2013-10-12" license: WTFPL-2 --- This already existed as `dprintf(3)`. I now feel stupid for having Implemented `fd_printf`. The original post is as follows: ---- I wrote this while debugging some code, and thought it might be useful to others: #define _GNU_SOURCE /* vasprintf() */ #include /* va_start()/va_end() */ #include /* vasprintf() */ #include /* free() */ #include /* write() */ int fd_printf(int fd, const char *format, ...) { va_list arg; int len; char *str; va_start(arg, format); len = vasprintf(&str, format, arg); va_end(arg); write(fd, str, len); free(str); return len; } It is a version of `printf` that prints to a file descriptor—where `fprintf` prints to a `FILE*` data structure. The appeal of this is that `FILE*` I/O is buffered—which means mixing it with raw file descriptor I/O is going to produce weird results.