Exec Functions (again) (again)
This commit is contained in:
committed by
Jeremy Soller
parent
da992bff56
commit
5c5e237042
@@ -0,0 +1,47 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user