1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/os/signal.c.v

17 lines
552 B
V
Raw Permalink Normal View History

module os
#include <signal.h>
fn C.signal(signal int, handlercb SignalHandler) voidptr
// signal will assign `handler` callback to be called when `signum` signal is received.
pub fn signal_opt(signum Signal, handler SignalHandler) !SignalHandler {
C.errno = 0
prev_handler := C.signal(int(signum), handler)
if prev_handler == C.SIG_ERR {
// errno isn't correctly set on Windows, but EINVAL is this only possible value it can take anyway
return error_with_code(posix_get_error_msg(C.EINVAL), C.EINVAL)
}
return SignalHandler(prev_handler)
}