extern int slurm_container_plugin_wait(uint64_t cont_id) { int delay = 1; if (cont_id == 0 || cont_id == 1) { errno = EINVAL; return SLURM_ERROR; } /* Spin until the container is successfully destroyed */ while (slurm_container_plugin_destroy(cont_id) != SLURM_SUCCESS) { slurm_container_plugin_signal(cont_id, SIGKILL); sleep(delay); if (delay < 120) { delay *= 2; } else { error("Unable to destroy container %"PRIu64"", cont_id); } } return SLURM_SUCCESS; }
extern int slurm_container_plugin_wait(uint64_t cont_id) { pid_t pgid = (pid_t)cont_id; int delay = 1; if (cont_id == 0 || cont_id == 1) { errno = EINVAL; return SLURM_ERROR; } /* Spin until the process group is gone. */ while (killpg(pgid, 0) == 0) { slurm_container_plugin_signal(cont_id, SIGKILL); sleep(delay); if (delay < 120) { delay *= 2; } else { error("Unable to destroy container %"PRIu64"", cont_id); } } return SLURM_SUCCESS; }