Execl и execv ведут себя одинаково. Единственное отличие состоит в том, как вы задаете вектор аргумента . Функции "l" принимают вектор аргумента как список, разделенный запятыми. Например.,
execl("/bin/ls", "/bin/ls", "-r", "-t", "-l", NULL);
Функции "v" принимают вектор аргумента как фактический вектор. Например.,
char *args[] = {"/bin/ls", "-r", "-t", "-l", NULL };
execv("/bin/ls", args);
См. здесь или здесь для получения информации об управлении процессом в C.
Как правило, дочерний процесс завершается, когда завершается выполнение. Родитель или другие процессы могут убить ребенка в любое время. Родитель может использовать функцию waitpid (), чтобы дождаться окончания выполнения дочернего процесса или проверить, завершил ли дочерний процесс выполнение.