Dado que el método xfnts_monitor_start utiliza scds_pmf_start() para iniciar el daemon del supervisor bajo PMF, xfnts_monitor_stop emplea scds_pmf_stop() para detener el daemon.
La primera llamada de xfnts_monitor_stop es a scds_initialize(), que ejecuta ciertas tareas domésticas necesarias (Función scds_initialize() y la página de comando man scds_initialize(3HA) ofrecen información más detallada.
El método xfnts_monitor_stop() invoca el método mon_stop, que se define en xfnts.c como se indica a continuación.
scds_syslog_debug(DBG_LEVEL_HIGH, "Llamar al método scds_pmf_stop"); err = scds_pmf_stop(scds_handle, SCDS_PMF_TYPE_MON, SCDS_PMF_SINGLE_INSTANCE, SIGKILL, scds_get_rs_monitor_stop_timeout(scds_handle)); if (err != SCHA_ERR_NOERR) { scds_syslog(LOG_ERR, "No se ha podido detener el supervisor de fallos."); return (1); } scds_syslog(LOG_INFO, "Se ha detenido el supervisor de fallos."); return (SCHA_ERR_NOERR); /* Supervisor de fallos detenido satisfactoriamente */ }
Observe lo siguiente sobre la llamada de svc_mon_stop() a la función scds_pmf_stop().
El parámetro SCDS_PMF_TYPE_MON identifica el programa que se va a detener como supervisor de fallos; este método también puede detener un servicio de datos u otro tipo de aplicación.
El parámetro SCDS_PMF_SINGLE_INSTANCE lo identifica como un recurso de una sola instancia.
El parámetro SIGKILL identifica la señal que se va a usar para detener la instancia del recurso. Si esta señal no puede detener la instancia, scds_pmf_stop() devuelve un error de tiempo de espera agotado. Consulte la página de comando man scds_pmf_stop(3HA) para obtener más información.
El valor de tiempo de espera es el que indica la propiedad Monitor_stop_timeout del recurso.
Antes de salir, el método xfnts_monitor_stop invoca scds_close() para reclamar recursos asignados por scds_initialize(). Consulte Función scds_initialize() y la página de comando man scds_close(3HA) para obtener más detalles.