|
// retoor <retoor@molodetz.nl>
|
|
|
|
class Signal {
|
|
static SIGHUP { 1 }
|
|
static SIGINT { 2 }
|
|
static SIGQUIT { 3 }
|
|
static SIGTERM { 15 }
|
|
static SIGUSR1 { 10 }
|
|
static SIGUSR2 { 12 }
|
|
|
|
foreign static trap_(signum, fiber)
|
|
foreign static ignore_(signum)
|
|
foreign static reset_(signum)
|
|
|
|
static trap(signum, fn) {
|
|
if (!(signum is Num)) Fiber.abort("Signal number must be a number.")
|
|
var fiber = Fiber.new {
|
|
while (true) {
|
|
fn.call()
|
|
Fiber.yield()
|
|
}
|
|
}
|
|
trap_(signum, fiber)
|
|
}
|
|
|
|
static ignore(signum) {
|
|
if (!(signum is Num)) Fiber.abort("Signal number must be a number.")
|
|
ignore_(signum)
|
|
}
|
|
|
|
static reset(signum) {
|
|
if (!(signum is Num)) Fiber.abort("Signal number must be a number.")
|
|
reset_(signum)
|
|
}
|
|
}
|