Я часто использую функцию execv() в С++, но если некоторые из аргументов находятся в строках С++. Меня раздражает, что я не могу этого сделать:
const char *args[4];
args[0] = "/usr/bin/whatever";
args[1] = filename.c_str();
args[2] = someparameter.c_str();
args[3] = 0;
execv(args[0], args);
Это не скомпилируется, потому что execv() принимает char * const argv [], который несовместим с const char *, поэтому мне нужно скопировать мои std:: строки в символ массивы с использованием strdup(), который является болью.
Кто-нибудь знает причину этого?