More EINTR handling
parent
0bb85a1ef9
commit
b1e5346179
10
vm/os-unix.c
10
vm/os-unix.c
|
@ -322,8 +322,16 @@ void safe_write(int fd, void *data, size_t size)
|
||||||
|
|
||||||
void safe_read(int fd, void *data, size_t size)
|
void safe_read(int fd, void *data, size_t size)
|
||||||
{
|
{
|
||||||
if(read(fd,data,size) != size)
|
ssize_t bytes = read(fd,data,size);
|
||||||
|
if(bytes < 0)
|
||||||
|
{
|
||||||
|
if(errno == EINTR)
|
||||||
|
safe_read(fd,data,size);
|
||||||
|
else
|
||||||
fatal_error("error reading fd",errno);
|
fatal_error("error reading fd",errno);
|
||||||
|
}
|
||||||
|
else if(bytes != size)
|
||||||
|
fatal_error("unexpected eof on fd",bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *stdin_loop(void *arg)
|
void *stdin_loop(void *arg)
|
||||||
|
|
Loading…
Reference in New Issue