diff options
author | Perl 5 Porters <perl5-porters.nicoh.com> | 1996-01-02 03:27:07 +0000 |
---|---|---|
committer | Andy Dougherty <doughera.lafayette.edu> | 1996-01-02 03:27:07 +0000 |
commit | 3595fceffa85af002f95c6d2ac8101f7f95d390a (patch) | |
tree | ca61525563992c2510bc4fe735f6e32ffc6ab64e /doio.c | |
parent | 568ef1f6d5ece280f6d27d282d56c43436151ebd (diff) | |
download | perl-3595fceffa85af002f95c6d2ac8101f7f95d390a.tar.gz |
VMS changes for kill.
Diffstat (limited to 'doio.c')
-rw-r--r-- | doio.c | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -1071,6 +1071,36 @@ register SV **sp; } else val = SvIVx(*mark); +#ifdef VMS + /* kill() doesn't do process groups (job trees?) under VMS */ + if (val < 0) val = -val; + if (val == SIGKILL) { +# include <starlet.h> + /* Use native sys$delprc() to insure that target process is + * deleted; supervisor-mode images don't pay attention to + * CRTL's emulation of Unix-style signals and kill() + */ + while (++mark <= sp) { + I32 proc = SvIVx(*mark); + register unsigned long int __vmssts; + if (!((__vmssts = sys$delprc(&proc,0)) & 1)) { + tot--; + switch (__vmssts) { + case SS$_NONEXPR: + case SS$_NOSUCHNODE: + SETERRNO(ESRCH,__vmssts); + break; + case SS$_NOPRIV: + SETERRNO(EPERM,__vmssts); + break; + default: + SETERRNO(EVMSERR,__vmssts); + } + } + } + break; + } +#endif if (val < 0) { val = -val; while (++mark <= sp) { |