From 52e50f9815f2eae5657e0c3dca29d811115a834b Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Sun, 30 Jun 2024 12:09:04 +0100 Subject: [PATCH] fix: get VM PID early so kill_vm() works reliably --- quickemu | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/quickemu b/quickemu index 8a17127..1c4b578 100755 --- a/quickemu +++ b/quickemu @@ -1505,7 +1505,7 @@ function vm_boot() { echo "${QEMU}" "${SHELL_ARGS}" "2>/dev/null" >> "${VMDIR}/${VMNAME}.sh" sed -i -e 's/ -/ \\\n -/g' "${VMDIR}/${VMNAME}.sh" ${QEMU} "${args[@]}" &> "${VMDIR}/${VMNAME}.log" & - local VM_PID=$! + VM_PID=$! sleep 0.25 if kill -0 "${VM_PID}" 2>/dev/null; then echo " - Process: Started ${VM} as ${VMNAME} (${VM_PID})" @@ -2062,6 +2062,17 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then pushd "${VMPATH}" >/dev/null || exit fi + # Check if VM is already running + VM_PID="" + if [ -r "${VMDIR}/${VMNAME}.pid" ]; then + VM_PID=$(head -n 1 "${VMDIR}/${VMNAME}.pid") + if ! kill -0 "${VM_PID}" > /dev/null 2>&1; then + #VM is not running, cleaning up. + VM_PID="" + rm -f "${VMDIR}/${VMNAME}.pid" + fi + fi + # Iterate over any actions and exit. if [ ${#ACTIONS[@]} -ge 1 ]; then for ACTION in "${ACTIONS[@]}"; do @@ -2105,17 +2116,6 @@ tpm_param_check viewer_param_check fileshare_param_check -# Check if vm is already run -VM_PID="" -if [ -r "${VMDIR}/${VMNAME}.pid" ]; then - VM_PID=$(head -n 1 "${VMDIR}/${VMNAME}.pid") - if ! kill -0 "${VM_PID}" > /dev/null 2>&1; then - # VM is not running, cleaning up. - VM_PID="" - rm -f "${VMDIR}/${VMNAME}.pid" - fi -fi - if [ -z "${VM_PID}" ]; then vm_boot start_viewer