1 #include <stdarg.h>
2 #include <unistd.h>
3 
execle(const char * path,const char * argv0,...)4 int execle(const char* path, const char* argv0, ...) {
5     int argc;
6     va_list ap;
7     va_start(ap, argv0);
8     for (argc = 1; va_arg(ap, const char*); argc++)
9         ;
10     va_end(ap);
11     {
12         int i;
13         char* argv[argc + 1];
14         char** envp;
15         va_start(ap, argv0);
16         argv[0] = (char*)argv0;
17         for (i = 1; i <= argc; i++)
18             argv[i] = va_arg(ap, char*);
19         envp = va_arg(ap, char**);
20         va_end(ap);
21         return execve(path, argv, envp);
22     }
23 }
24