Форум: "Система";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];
ВнизПодскажите, пожалуйста, как перехватить сообщение о том, что программа выполнила недопустимую операцию и будет закрыта. Найти похожие ветки
← →
Digitman (2001-10-25 08:56) [12]>Someone
<Alien> совершенно верно говорит - если процесс завершается (в дан. случае - принудительно, по инициативе ОС из-за попытки выполнения недопустимой операции), то с выполнения снимаются ВСЕ потоки - основной (собственно поток процесса) и дополнительные (если они были созданы в контексте процесса). Да по иному и быть не может, потому что все потоки разделяют один и тот же кодовый сегмент (т.е., в них выполняются одни и те же инструкции CPU), и, если в исп.коде встретилась некая инструкция, интерпретируемая CPU при попытке ее выполнения как ошибочная, эта инструкция В ПРИНЦИПЕ не может быть выполнена НИ В ОДНОМ потоке (неважно - в осн. или доп.), и дальнейшее выполнение задачи бессмысленно - ОС аварийно снимает процесс с выполнения, освобождая ресурсы, ассоциированные со всеми работавшими потоками процесса.
Так что узнать ничего нельзя (потоков-то уже нет !)... за исключением лаконичной информации, любезно выдаваемой ОС в виде состояния регистров CPU, точки в сегменте кода, вызвавшей коллизию и (в ряде случаев) имени субмодуля задачи, в контексте которого коллизия и приключилась.
А вот порожденный процесс в о многих случаях действительно может продолжать свое существование даже после краха родительского процесса. Так что, скорее всего, ты ошибочно принял "деятельность" порожденного процесса за "деятельность" некоего незавершенного доп. потока "безвременно умершего" родительского процесса.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c