Вот пример, игнорирующий проверку ошибок:
int main()
{
pid_t pid = fork();
if(0 == pid)
{
for(int i = 0; i < 5; ++i)
{
char* const args[] = { "/bin/ls", nullptr };
execve("/bin/ls", args, nullptr);
}
}
else if(pid > 0)
{
wait(nullptr);
}
}
Если exec () после fork (), насколько я знаю, linux не будет копировать, а охватит оригинальную систему.
Что мне делать, если я хочу продолжать выполнять execve () в цикле for () следующим образом?
exec
(все разные формы) будут замените ваш текущий исполняемый файл на тот, который дан exec
так что НИЧЕГО, что вы делаете в разветвленном коде, не будет иметь значения. Вам нужно либо сделать цикл вокруг fork
или убедите автора другой программы запустить цикл для вас.
Других решений пока нет …