WIFSIGNALED means process has exited too (with a bang!) (#5678)
This commit is contained in:
parent
40f79e6cdd
commit
0055729755
6 changed files with 95 additions and 18 deletions
|
|
@ -97,15 +97,6 @@ when not defined(macosx):
|
|||
## Second-granularity time of last status change.
|
||||
result = s.st_ctim.tv_sec
|
||||
|
||||
proc WIFCONTINUED*(s:cint) : bool {.importc, header: "<sys/wait.h>".}
|
||||
## True if child has been continued.
|
||||
proc WIFEXITED*(s:cint) : bool {.importc, header: "<sys/wait.h>".}
|
||||
## True if child exited normally.
|
||||
proc WIFSIGNALED*(s:cint) : bool {.importc, header: "<sys/wait.h>".}
|
||||
## True if child exited due to uncaught signal.
|
||||
proc WIFSTOPPED*(s:cint) : bool {.importc, header: "<sys/wait.h>".}
|
||||
## True if child is currently stopped.
|
||||
|
||||
when hasAioH:
|
||||
proc aio_cancel*(a1: cint, a2: ptr Taiocb): cint {.importc, header: "<aio.h>".}
|
||||
proc aio_error*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".}
|
||||
|
|
|
|||
|
|
@ -602,3 +602,12 @@ var
|
|||
include posix_linux_amd64_consts
|
||||
|
||||
const POSIX_SPAWN_USEVFORK* = cint(0x40) # needs _GNU_SOURCE!
|
||||
|
||||
# <sys/wait.h>
|
||||
proc WEXITSTATUS*(s: cint): cint = (s and 0xff00) shr 8
|
||||
proc WTERMSIG*(s:cint): cint = s and 0x7f
|
||||
proc WSTOPSIG*(s:cint): cint = WEXITSTATUS(s)
|
||||
proc WIFEXITED*(s:cint) : bool = WTERMSIG(s) == 0
|
||||
proc WIFSIGNALED*(s:cint) : bool = (cast[int8]((s and 0x7f) + 1) shr 1) > 0
|
||||
proc WIFSTOPPED*(s:cint) : bool = (s and 0xff) == 0x7f
|
||||
proc WIFCONTINUED*(s:cint) : bool = s == W_CONTINUED
|
||||
|
|
|
|||
|
|
@ -611,3 +611,18 @@ when hasSpawnH:
|
|||
# OR'ing of flags:
|
||||
const POSIX_SPAWN_USEVFORK* = cint(0)
|
||||
|
||||
# <sys/wait.h>
|
||||
proc WEXITSTATUS*(s: cint): cint {.importc, header: "<sys/wait.h>".}
|
||||
## Exit code, iff WIFEXITED(s)
|
||||
proc WTERMSIG*(s: cint): cint {.importc, header: "<sys/wait.h>".}
|
||||
## Termination signal, iff WIFSIGNALED(s)
|
||||
proc WSTOPSIG*(s: cint): cint {.importc, header: "<sys/wait.h>".}
|
||||
## Stop signal, iff WIFSTOPPED(s)
|
||||
proc WIFEXITED*(s: cint): bool {.importc, header: "<sys/wait.h>".}
|
||||
## True if child exited normally.
|
||||
proc WIFSIGNALED*(s: cint): bool {.importc, header: "<sys/wait.h>".}
|
||||
## True if child exited due to uncaught signal.
|
||||
proc WIFSTOPPED*(s: cint): bool {.importc, header: "<sys/wait.h>".}
|
||||
## True if child is currently stopped.
|
||||
proc WIFCONTINUED*(s: cint): bool {.importc, header: "<sys/wait.h>".}
|
||||
## True if child has been continued.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue