Зачем нужны аргументы argv
для семейства execv*()
char * const []
, а execl*()
- arg0...n
- const char *
? Это просто ошибка в стандарте, и она должна быть const char * const []
или есть причина, по которой строки не будут const-константами в случае массива, но const в случае явно переданных аргументов?Почему аргументы execv *() несовместимы с execl *()?
int execl(const char *path, const char *arg0, ... /*, (char *)0 */);
int execv(const char *path, char *const argv[]);
int execle(const char *path, const char *arg0, ... /*,
(char *)0, char *const envp[]*/);
int execve(const char *path, char *const argv[], char *const envp[]);
int execlp(const char *file, const char *arg0, ... /*, (char *)0 */);
int execvp(const char *file, char *const argv[]);