#if !defined(_GNU_SOURCE) #define _GNU_SOURCE #endif #include <errno.h> #include <fcntl.h> #include <stdarg.h> #include <stdint.h> #include <stdio.h> #include <sys/syscall.h> #include <unistd.h> int close(int fd) { if (fd == 1022 || fd == 1023) { return 0; } return syscall(__NR_close, fd); } int fcntl(int __fd, int __cmd, ...) { va_list ap; va_start(ap, __cmd); int a1 = va_arg(ap, int); int a2 = va_arg(ap, int); int a3 = va_arg(ap, int); int a4 = va_arg(ap, int); va_end(ap); if (__fd == 1022 || __fd == 1023) { if (__cmd == F_SETFD) { a1 &= ~(FD_CLOEXEC); } } return syscall(__NR_fcntl, __fd, __cmd, a1, a2, a3, a4); }