Add execlp

This commit is contained in:
Jeremy Soller
2018-11-22 20:43:04 -07:00
parent 3cc215caeb
commit 9790289aec
2 changed files with 24 additions and 0 deletions
+1
View File
@@ -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"
+23
View File
@@ -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);
}
}