|
|
||
5. Завершение процессов |
||
Процесс может завершить свою работу вызовом функции ExitProcess, которая имеет следующий прототип: При вызове функции ExitProcess завершаются все потоки процесса с кодом возврата, который является параметром этой функции. При выполнении этой функции система посылает динамическим библиотекам, которые загружены процессом, сообщение dll_process_detach, которое говорит о том, что динамическую библиотеку необходимо отсоединить от процесса. Листинг 4.5. Завершение процесса функцией ExitProcess |
||
#include <windows.h> volatile UINT count; void thread() int main() hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread, NULL, for (;;) |
||
Один процесс может быть завершен другим при помоши вызова функции TerminateProcess, которая имеет следующий прототип: Если функция TerminateProcess выполнилась успешно, то она возвращает ненулевое значение. В противном случае возвращаемое значение равно false. Функция TerminateProcess завершает работу процесса, но не освобождает все ресурсы, принадлежащие этому процессу. Это происходит потому, что при выполнении этой функции система не посылает динамическим библиотекам, загруженным процессом, сообщение о том, что библиотеку необходимо отсоединить от процесса. Поэтому эта функция должна вызываться только в аварийных ситуациях при зависании процесса. |
||
5 |