2016-05-06 3 views
-1

Предположим, что в какой-то момент в моей программе я использую execv, и функция прошла успешно. Теперь моя программа изменилась. Что с ним случилось? (Все ли память автоматически стирается?)Что происходит с текущей программой после вызова функции execv?

+0

Возможный дубликат [Пожалуйста, объясните функцию exec() и ее семью] (http://stackoverflow.com/questions/4204915/please-explain-exec-function-and-its-family) –

ответ

1

execve() не возвращается к успеху, а текст, данные, bss и стек вызывающего процесса перезаписываются загружаемой программой.

То есть все данные текущего процесса исчезнут, и новая программа будет загружена в память, заменив исходный процесс.

+0

так, например, если вы разыгрываете процесс и из «дочернего кода» malloc() некоторое количество памяти, а затем вызывает execv(), вам не нужно его освобождать(). Правильно? – LiorGolan

+0

@LiorGolan это правильно. – fluter