More EINTR handling
parent
0bb85a1ef9
commit
b1e5346179
12
vm/os-unix.c
12
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)
|
||||
{
|
||||
if(read(fd,data,size) != size)
|
||||
fatal_error("error reading fd",errno);
|
||||
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);
|
||||
}
|
||||
else if(bytes != size)
|
||||
fatal_error("unexpected eof on fd",bytes);
|
||||
}
|
||||
|
||||
void *stdin_loop(void *arg)
|
||||
|
|
Loading…
Reference in New Issue