From 8afbbc86d170c49bbbdd801f43cd77774bcde13e Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Wed, 29 Jul 2020 20:35:59 +0200 Subject: getdents_c: continue on EINTR from open Getting EINTR here is acceptable. --- contrib/getdents-debug/getdents_c/getdents.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'contrib/getdents-debug') diff --git a/contrib/getdents-debug/getdents_c/getdents.c b/contrib/getdents-debug/getdents_c/getdents.c index 936bd0b..94f8c97 100644 --- a/contrib/getdents-debug/getdents_c/getdents.c +++ b/contrib/getdents-debug/getdents_c/getdents.c @@ -9,6 +9,7 @@ #include #include #include +#include int main(int argc, char *argv[]) { @@ -23,7 +24,10 @@ int main(int argc, char *argv[]) for (int i = 1 ; ; i ++ ) { int fd = open(path, O_RDONLY); if (fd == -1) { - perror("open"); + printf("%3d: open: %s\n", i, strerror(errno)); + if(errno == EINTR) { + continue; + } exit(1); } @@ -31,6 +35,7 @@ int main(int argc, char *argv[]) int sum = 0; printf("%3d: getdents64: ", i); for ( ; ; ) { + errno = 0; int n = syscall(SYS_getdents64, fd, tmp, sizeof(tmp)); printf("n=%d; ", n); if (n <= 0) { -- cgit v1.2.3