Tengo dos sistemas Linux que se comunican a través de sockets (escritorio y placa de desarrollo basada en ARM).
Quiero reiniciar (o restablecer) mi aplicación cliente (que se ejecuta en una placa de desarrollo) cuando el servidor envía un mensaje predefinido en particular. No quiero reiniciar (reiniciar) Linux, solo quiero que la aplicación cliente se reinicie automáticamente.
No puedo entender cómo se debe hacer.
Respuesta aceptada:
La forma normal de hacer esto es dejar que su programa salga y usar un sistema de monitoreo para reiniciarlo. El init
programa ofrece un sistema de seguimiento de este tipo. Hay muchos programas de inicio diferentes (SysVinit, BusyBox, Systemd, etc.), con mecanismos de configuración completamente diferentes (siempre escribiendo un archivo de configuración, pero la ubicación y la sintaxis del archivo difieren), así que busque la documentación del que estás usando. Configure init para iniciar su programa en el momento del arranque o tras una solicitud explícita, y para reiniciarlo si muere. También hay programas de monitoreo más sofisticados, pero no parece que los necesite. Este enfoque tiene muchas ventajas sobre hacer que el programa reinicie por sí mismo:es estándar, por lo que puede reiniciar un montón de servicios sin tener que preocuparse por cómo están hechos; funciona incluso si el programa muere debido a un error.
Hay un mecanismo estándar para decirle a un proceso que salga:las señales. Envía a tu programa una señal TERM. Si su programa necesita realizar alguna limpieza, escriba un controlador de señal. Eso no impide tener un comando específico del programa para que se apague si tiene un canal administrativo para enviar comandos como este.