Это запустит программу и даст мне код возврата.
int returnCode; returnCode = system(program);
Как я могу сделать то же самое с execv?
Семейство вызовов exec очищает текущий процесс и запускает новую программу в том же пространстве процесса.Если вы хотите выполнить другую программу в вашей текущей программе, вам нужно запустить новый процесс, используя fork Затем вы вызываете exec в дочернем процессе и заставляете родителя ждать, пока дочерний процесс завершится.Затем функция waitpid предоставит код возврата дочернего процесса.
exec
fork
waitpid
См. здесь для примера.
Я цитирую справочную страницу
Семейство функций exec () заменяет текущий образ процесса новым образом процесса.
т.е. exec не возвращается.Чего вы хотите достичь, или поставить иначе, что не так с системой?