Я разрабатываю DLL на C ++, которой необходимо записать некоторые данные через (ранее установленное) соединение TCP / IP с помощью вызова write () .Чтобы быть точным, DLL должна отправить небольшое сообщение: «Процесс 12345 завершается в 2007-09-27 15:30:42, значение i равно 131», когда процесс прерывается.
К сожалениювсе известные мне способы определения окончания процесса, по-видимому, слишком запоздали для любых сетевых вызовов.В частности, я попробовал следующие подходы, и вызов write () возвращал -1 в каждом случае:
- Вызов write () из деструктораглобальный объект.
- Вызов write () из функции обратного вызова, зарегистрированной с использованием atexit () .
- Вызов write () из DllMain (в случае, если аргумент
reason
равен DLL_PROCESS_DETACH
).Я знаю, что это небезопасно, но я немного отчаялся.: -)
Я знаю, что DLL не может обнаружить любое завершение процесса (возможно, оно было выгружено задолго до завершения процесса), но с момента завершения работы данныхDLL необходимо отправить зависит от другого кода в DLL, это приемлемо.Я в основном ищу последний момент, когда я могу безопасно выполнить сетевой ввод-вывод.
Кто-нибудь знает, как это сделать?