package SPVM::Sys::Signal;

1;

=head1 Name

SPVM::Sys::Signal - Signals

=head1 Description

Sys::Signal class in L<SPVM> has methods to manipulate signals.

=head1 Usage
  
  use Sys::Signal;
  use Sys::Signal::Constant as SIGNAL;
  
  Sys::Signal->kill($process_id, SIGNAL->SIGINT);
  
  Sys::Signal->signal(SIGNAL->SIGTERM, Sys::Signal->SIG_IGN);

=head1 Class Methods

=head2 raise

C<static method raise : int ($sig : int)>

Calls the L<raise|https://linux.die.net/man/3/raise> function and returns its return value.

See L<Sys::Signal::Constant|SPVM::Sys::Signal::Constant> about constant values given to $sig.

Exceptions:

If the raise function failed, an exception is thrown with C<eval_error_id> set to the basic type ID of the L<Error::System|SPVM::Error::System> class.

=head2 kill

C<static method kill : int ($pid : int, $sig : int)>

Calls the L<kill|https://linux.die.net/man/2/kill> function and returns its return value.

See L<Sys::Signal::Constant|SPVM::Sys::Signal::Constant> about constant values given to $sig.

Exceptions:

If the kill function failed, an exception is thrown with C<eval_error_id> set to the basic type ID of the L<Error::System|SPVM::Error::System> class.

In Windows the following excetpion is thrown. kill is not supported in this system(defined(_WIN32)).

=head2 alarm

C<static method alarm : int ($seconds : int)>

Calls the L<alarm|https://linux.die.net/man/2/alarm> function and returns its return value.

Exceptions:

If the alarm function failed, an exception is thrown with C<eval_error_id> set to the basic type ID of the L<Error::System|SPVM::Error::System> class.

In Windows the following excetpion is thrown. alarm is not supported in this system(defined(_WIN32)).

=head2 ualarm

C<static method ualarm : int ($usecs : int, $interval : int)>

Calls the L<ualarm|https://linux.die.net/man/3/ualarm> function and returns its return value.

Exceptions:

In Windows the following excetpion is thrown. ualarm is not supported in this system(defined(_WIN32)).

=head2 signal

C<static method signal : L<Sys::Signal::Handler|SPVM::Sys::Signal::Handler> ($signum : int, $handler : L<Sys::Signal::Handler|SPVM::Sys::Signal::Handler>);>

Calls L<signal|https://linux.die.net/man/2/signal> function and creates a signal handler object with its pointer set to the function's return value, and returns it.

$handler can be L</"SIG_DFL"> and L</"SIG_IGN">.

See L<Sys::Signal::Constant|SPVM::Sys::Signal::Constant> about constant values given to $sig.

Exceptions:

$handler must be defined. Otherwise an exception is thrown.

If the signal function failed, an exception is thrown with C<eval_error_id> set to the basic type ID of the L<Error::System|SPVM::Error::System> class.

=head2 SIG_DFL

C<static method SIG_DFL : L<Sys::Signal::Handler|SPVM::Sys::Signal::Handler> ();>

Creates a new signal handler that represents C<SIG_DFL>.

=head2 SIG_IGN

C<static method SIG_IGN : L<Sys::Signal::Handler|SPVM::Sys::Signal::Handler> ();>

Creates a new signal handler that represents C<SIG_IGN>.

=head2 SIG_GO

C<static method SIG_GO : L<Sys::Signal::Handler|SPVM::Sys::Signal::Handler> ();>

Creates a new signal handler that represents the signal handler for L<Go::OS::Signal|SPVM::Go::OS::Signal>.

Do not use this signal handler because this signal handler is prepared to implement the  L<Go::OS::Signal|SPVM::Go::OS::Signal> class.

=head2 SET_SIG_GO_WRITE_FD

C<static method SET_SIG_GO_WRITE_FD : void ($fd : int);>

Set a write file descriptor for L<Go::OS::Signal|SPVM::Go::OS::Signal>.

Do not use this method because this method is prepared to implement the L<Go::OS::Signal|SPVM::Go::OS::Signal> class.

=head1 See Also

=over 2

=item * L<Go::OS::Signal|SPVM::Go::OS::Signal>

=item * L<Sys|SPVM::Sys>

=back

=head1 Copyright & License

Copyright (c) 2023 Yuki Kimoto

MIT License

