Listing 3. Handling Short Writes
/*
* 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);
}
}
}
Copyright © 1994 - 2019 Linux Journal. All rights reserved.