Pregunta

Bajo POSIX OS hay una señal API que permite enviar una señal para procesar y apagarla con kill y puedes atraparlo con sigaction y hacer lo que necesites;

Sin embargo, Win32 no es un sistema POSIX, entonces:

  • ¿Cómo puedo manejar los eventos de apagado que pueden venir, por ejemplo, de "Fin de proceso"? en " Administrador de tareas " ;?
  • ¿Cuál es la API estándar para enviar la señal de apagado a la aplicación Win32?

No estoy hablando de GUI, estoy hablando de un servidor TCP / IP que debería estar bien apagado. que no se ejecuta como el servicio de Windows.

¿Fue útil?

Solución

Obtiene un mensaje WM_QUIT en su primer hilo creado.

Cuando no manejas eso, tu proceso se cierra por la fuerza.

Así que simplemente implemente una cola de mensajes en su primer hilo, que busca el mensaje WM_QUIT

Otros consejos

MSDNs Guía de migración de código Unix tiene un capítulo sobre Conversión de código Win32 y manejo de señal .
Aunque Microsoft ha decidido archivar esta guía brillante, es muy útil.

Se describen tres métodos:
Señales nativas
Objetos de evento
Mensajes

Puede ser Windows Power Management de MSDN Sería útil. Pero trata con eventos del sistema en lugar de por proceso.

Para un proceso, podrá detectar la terminación con WM_CLOSE . Tendría que manejar los mensajes de Windows. Si se trata de una aplicación de consola, necesitará instalar un controlador de control; eche un vistazo a SetConsoleCtrlHandler en MSDN

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top