Предположим, что в какой-то момент в моей программе я использую execv
, и функция успешно выполняется. Теперь моя программа изменилась. Что именно с ним случилось? (Вся память стирается автоматически?)
Что происходит с текущей программой после вызова функции execv?
comment
Возможный дубликат Пожалуйста, объясните функцию exec() и ее семейство
- person Dan Getz   schedule 06.05.2016
Ответы (1)
execve() не возвращается в случае успеха, а текст, данные, bss и стек вызывающего процесса перезаписываются загруженной программой.
То есть все данные текущего процесса будут удалены, а новая программа будет загружена в память, заменив исходный процесс.
person
fluter
schedule
06.05.2016
так, например, если вы разветвляете процесс и из дочернего кода malloc() некоторую память, а затем вызываете execv(), вам не нужно его освобождать(). Правильно?
- person LiorGolan; 06.05.2016
@LiorGolan это верно.
- person fluter; 06.05.2016