retry writes on EINTR a couple times

This commit is contained in:
Glenn Maynard
2004-01-12 23:54:13 +00:00
parent 7e7a007cdd
commit 24016f1b84
+13 -1
View File
@@ -56,10 +56,22 @@ static void spawn_child_process(int from_parent)
_exit(1);
}
/* write(), but retry a couple times on EINTR. */
int retried_write( int fd, const void *buf, size_t count )
{
int tries = 3, ret;
do
{
ret = write( fd, buf, count );
}
while( tries-- && ret == -1 && errno == EINTR );
return ret;
}
static void parent_write(int to_child, const void *p, size_t size)
{
size_t ret = write(to_child, p, size);
size_t ret = retried_write(to_child, p, size);
if(ret != size)
{
safe_print(fileno(stderr), "Unexpected write() result (", strerror(errno), ")\n", NULL);