Add execlp
This commit is contained in:
@@ -9,6 +9,7 @@ extern "C" {
|
||||
|
||||
int execl(const char *path, const char* argv0, ...);
|
||||
int execle(const char *path, const char* argv0, ...);
|
||||
int execlp(const char *file, const char* argv0, ...);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
||||
@@ -47,3 +47,26 @@ int execle(const char *path, const char* argv0, ...)
|
||||
return execve(path, argv, envp);
|
||||
}
|
||||
}
|
||||
|
||||
int execvp(const char *file, char *const *argv);
|
||||
|
||||
int execlp(const char *file, 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 execvp(file, argv);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user