#ifndef _BITS_EXEC_H #define _BITS_EXEC_H int execl(const char *path, const char* argv0, ...) { int argc; va_list ap; va_start(ap, argv0); for (argc = 1; va_arg(ap, const char*); argc++); va_end(ap); { int i; char *argv[argc+1]; va_start(ap, argv0); argv[0] = (char *)argv0; for (i = 1; i < argc; i++) { argv[i] = va_arg(ap, char *); } argv[i] = NULL; va_end(ap); return execv(path, argv); } } int execle(const char *path, const char* argv0, ...) { int argc; va_list ap; va_start(ap, argv0); for (argc = 1; va_arg(ap, const char *); argc++); va_end(ap); { int i; char *argv[argc+1]; char **envp; va_start(ap, argv0); argv[0] = (char *)argv0; for (i = 1; i <= argc; i++) { argv[i] = va_arg(ap, char *); } envp = va_arg(ap, char **); va_end(ap); return execve(path, argv, envp); } } #endif