implement fexecve
authorRich Felker <dalias@aerifal.cx>
Sun, 27 Feb 2011 07:59:23 +0000 (02:59 -0500)
committerRich Felker <dalias@aerifal.cx>
Sun, 27 Feb 2011 07:59:23 +0000 (02:59 -0500)
include/unistd.h
src/process/fexecve.c [new file with mode: 0644]

index c0994af4fa0f7682b21b6e1ccdf6d39e9b7e19e4..f819429e8d008cd22809df8c26d93d0ddb8c90fb 100644 (file)
@@ -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);
diff --git a/src/process/fexecve.c b/src/process/fexecve.c
new file mode 100644 (file)
index 0000000..3098645
--- /dev/null
@@ -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);
+}