static void try_kill_process(int which) { if (which < 0 || which >= N_PID) return; char *pidfile = ctl->pidfile[which]; int pid = read_pid_from_pidfile(pidfile); if (pid > 0) kill((pid_t)pid, SIGTERM); }
static void try_kill_process(int which) { if (which < 0 || which >= N_PID) return; char *pidfile = ctl->pidfile[which]; int pid = read_pid_from_pidfile(pidfile); if (pid > 0) { // if SIGTERM send success, then remove related pid file if (kill ((pid_t)pid, SIGTERM) == 0) { g_unlink (pidfile); } } }
static gboolean need_restart (int which) { if (which < 0 || which >= N_PID) return FALSE; int pid = read_pid_from_pidfile (ctl->pidfile[which]); if (pid == PID_ERROR_ENOENT) { seaf_warning ("pid file %s does not exist\n", ctl->pidfile[which]); return TRUE; } else if (pid == PID_ERROR_OTHER) { seaf_warning ("failed to read pidfile %s: %s\n", ctl->pidfile[which], strerror(errno)); return FALSE; } else { char buf[256]; snprintf (buf, sizeof(buf), "/proc/%d", pid); if (g_file_test (buf, G_FILE_TEST_IS_DIR)) { return FALSE; } else { return TRUE; } } }