@@ -86,6 +86,7 @@ int execle(const char *, ...);
int execl(const char *, ...);
int execvp(const char *, char *const []);
int execlp(const char *, ...);
+int fexecve(int, char *const [], char *const []);
void _exit(int);
pid_t getpid(void);
@@ -0,0 +1,10 @@
+#include <unistd.h>
+#include <stdio.h>
+
+int fexecve(int fd, char *const argv[], char *const envp[])
+{
+ static const char proc[] = "/proc/self/fd/%d";
+ char buf[sizeof proc + 3*sizeof(int)];
+ snprintf(buf, sizeof buf, proc, fd);
+ return execve(buf, argv, envp);
+}