1 /* exec.cc: exec system call support.
3 Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2009, 2011 Red Hat, Inc.
5 This file is part of Cygwin.
7 This software is a copyrighted work licensed under the terms of the
8 Cygwin license. Please consult the file "CYGWIN_LICENSE" for
24 execl (const char *path, const char *arg0, ...)
28 const char *argv[1024];
30 va_start (args, arg0);
34 argv[i] = va_arg (args, const char *);
35 while (argv[i++] != NULL);
38 return spawnve (_P_OVERLAY, path, (char * const *) argv, cur_environ ());
42 execle (const char *path, const char *arg0, ...)
46 const char *argv[1024];
47 const char * const *envp;
49 va_start (args, arg0);
53 argv[i] = va_arg (args, const char *);
54 while (argv[i++] != NULL);
55 envp = va_arg (args, const char * const *);
58 return spawnve (_P_OVERLAY, path, (char * const *) argv, envp);
62 execlp (const char *file, const char *arg0, ...)
66 const char *argv[1024];
69 va_start (args, arg0);
73 argv[i] = va_arg (args, const char *);
74 while (argv[i++] != NULL);
77 return spawnve (_P_OVERLAY | _P_PATH_TYPE_EXEC,
78 find_exec (file, buf, "PATH=", FE_NNF) ?: "",
79 (char * const *) argv, cur_environ ());
83 execv (const char *path, char * const *argv)
86 return spawnve (_P_OVERLAY, path, argv, cur_environ ());
90 execve (const char *path, char *const argv[], char *const envp[])
93 return spawnve (_P_OVERLAY, path, argv, envp);
97 execvp (const char *file, char * const *argv)
102 return spawnve (_P_OVERLAY | _P_PATH_TYPE_EXEC,
103 find_exec (file, buf, "PATH=", FE_NNF) ?: "",
104 argv, cur_environ ());
108 execvpe (const char *file, char * const *argv, char *const *envp)
113 return spawnve (_P_OVERLAY | _P_PATH_TYPE_EXEC,
114 find_exec (file, buf, "PATH=", FE_NNF) ?: "",
119 fexecve (int fd, char * const *argv, char *const *envp)
121 cygheap_fdget cfd (fd);
124 syscall_printf ("-1 = fexecve (%d, %p, %p)", fd, argv, envp);
129 return spawnve (_P_OVERLAY, cfd->pc.get_win32 (), argv, envp);