/* * Listing 3: * Handling short writes * Ivan Griffin (ivan.griffin@ul.ie) */ int bytesToSend = 0, bytesWritten = 0, num = 0; /* * somewhere here bytesToSend, buffer, and fileDesc must be * set up. */ for (bytesWritten = 0; bytesWritten < bytesToSend; bytesWritten += num) { num = write(fileDesc, (void *)( (char *)buffer + (char *)bytesWritten ), bytesToSend - bytesWritten); if (num < 0) { perror("write()"); if (errno != EINTR) { exit(1); } } } Listing 3. Handling short writes.