diff options
-rw-r--r-- | jim-exec.c | 4 | ||||
-rw-r--r-- | tests/exec2.test | 9 |
2 files changed, 13 insertions, 0 deletions
@@ -613,6 +613,10 @@ static int Jim_WaitCommand(Jim_Interp *interp, int argc, Jim_Obj *const *argv) */ pid = phandle; } + else if (phandle == 0) { + /* Child still running */ + pid = 0; + } #endif errCodeObj = JimMakeErrorCode(interp, pid, status, NULL); diff --git a/tests/exec2.test b/tests/exec2.test index 9daef58..e63cbbd 100644 --- a/tests/exec2.test +++ b/tests/exec2.test @@ -172,4 +172,13 @@ test exec2-5.6 {wait -1 to wait for any child} -constraints {after jim nomingw32 list $status $($waitpid == $pid) $code } -result {CHILDSTATUS 1 0} +test exec2-5.7 {wait -nohang for child not finished} -constraints {after jim nomingw32} -body { + set pid [exec sleep 10 &] + # Get the status of the running child + wait -nohang $pid +} -result {NONE 0 -1} -cleanup { + kill $pid + wait $pid +} + testreport |