1 /* $OpenBSD: rlim-file.c,v 1.4 2014/05/20 01:25:24 guenther Exp $ */
2 /*
3 * Written by Artur Grabowski <art@openbsd.org> (2002) Public Domain.
4 */
5 #include <sys/types.h>
6 #include <sys/time.h>
7 #include <sys/resource.h>
8 #include <err.h>
9 #include <unistd.h>
10 #include <fcntl.h>
11 #include <errno.h>
12 #include <string.h>
13
14 int
main(int argc,char * argv[])15 main(int argc, char *argv[])
16 {
17 int lim, fd, fds[2];
18 struct rlimit rl;
19
20 if (getrlimit(RLIMIT_NOFILE, &rl) < 0)
21 err(1, "getrlimit");
22
23 lim = rl.rlim_cur;
24
25 fd = -1;
26 while (fd < lim - 2)
27 if ((fd = open("/dev/null", O_RDONLY)) < 0)
28 err(1, "open");
29
30 if (pipe(fds) == 0)
31 errx(1, "pipe was allowed");
32
33 if (errno == ENFILE)
34 errx(1, "try to do the test on a less loaded system");
35
36 if (errno != EMFILE)
37 err(1, "bad errno (%d)", errno);
38
39 return 0;
40 }
41
42