summaryrefslogtreecommitdiffstats
path: root/otherlibs/unix/kill.c
diff options
context:
space:
mode:
Diffstat (limited to 'otherlibs/unix/kill.c')
-rw-r--r--otherlibs/unix/kill.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/otherlibs/unix/kill.c b/otherlibs/unix/kill.c
new file mode 100644
index 000000000..a552d0931
--- /dev/null
+++ b/otherlibs/unix/kill.c
@@ -0,0 +1,20 @@
+#include <mlvalues.h>
+#include <fail.h>
+#include "unix.h"
+#include <signal.h>
+
+extern int posix_signals[]; /* defined in byterun/signals.c */
+
+value unix_kill(pid, signal) /* ML */
+ value pid, signal;
+{
+ int sig;
+ sig = Int_val(signal);
+ if (sig < 0) {
+ sig = posix_signals[-sig-1];
+ if (sig == 0) invalid_argument("Unix.kill: unavailable signal");
+ }
+ if (kill(Int_val(pid), sig) == -1)
+ uerror("kill", Nothing);
+ return Val_unit;
+}