#include <unistd.h> #include <errno.h> ssize_t writen(int fd, const void *vptr, size_t n) { size_t nleft; ssize_t nwritten; const char *ptr; ptr = vptr; nleft = n; while (nleft > 0) { if ( (nwritten = write(fd, ptr, nleft)) <= 0) { if (nwritten < 0 && errno == EINTR) { nwritten = 0; /* call write() again */ } else { return (-1); /* error */ } } nleft -= nwritten; ptr += nwritten; } return (n - nwritten); }
函数功能:往一个描述符写n字节