getdents_c: continue on EINTR from open

Getting EINTR here is acceptable.
This commit is contained in:
Jakob Unterwurzacher 2020-07-29 20:35:59 +02:00
parent 5073459296
commit 8afbbc86d1
1 changed files with 6 additions and 1 deletions

View File

@ -9,6 +9,7 @@
#include <sys/stat.h>
#include <sys/syscall.h>
#include <errno.h>
#include <string.h>
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) {