ref: f0c4423afd2dc42988af0e9b7fdcd1371e2fda73
dir: /lib/std/wait+posixy.myr/
use sys use "die.use" use "syswrap.use" pkg std = type waitstatus = union `Wsuccess `Wfailure `Wsignalled `Waiterror ;; const wait : (pid : pid -> waitstatus) ;; const wait = {pid var st :again if sys.waitpid(pid castto(sys.pid), &st, 0) > 0 match sys.waitstatus(st) /* when a process stops, eg, if paused by a debugger, wait() will return. This API is for waiting until a process exits. Loop instead. */ | `sys.Waitstop sig: goto again | `sys.Waitfail fail: -> `Waiterror | `sys.Waitsig sig: -> `Wsignalled | `sys.Waitexit status: if status == 0 -> `Wsuccess else -> `Wfailure ;; ;; ;; -> `Waiterror }