NAME

    IO::Async::Process::GracefulShutdown - controlled shutdown of a process

SYNOPSIS

       use IO::Async::Process::GracefulShutdown;
    
       use IO::Async::Loop;
       my $loop = IO::Async::Loop;
    
       my $process = IO::Async::Process::GracefulShutdown->new(
          command => [ "my-proc" ],
       );
    
       $loop->add( $process );
    
       ...
    
       $process->shutdown( "TERM" )->get;

DESCRIPTION

    This subclass of IO::Async::Process adds a method to perform a shutdown
    of the invoked process by sending a signal. If after some delay the
    process has not yet exited, it is sent a SIGKILL instead.

METHODS

 finish_future

       $f = $process->finish_future

    Returns a Future that completes when the process finishes. It will
    yield the exit code from the process.

 shutdown

       $process->shutdown( $signal, %args )->get

    Requests the process shut down by sending it the given signal (either
    specified by name or number). If the process does not shut down after a
    timeout, SIGKILL is sent instead.

    The returned future will complete when the process exits.

    Takes the following named arguments:

    timeout => NUM

      Optional. Number of seconds to wait for exit before sending SIGKILL.
      Defaults to 10 seconds.

    on_kill => CODE

      Optional. Callback to invoke if the timeout occurs and SIGKILL is
      going to be sent. Intended for printing or logging purposes; this
      doesn't have any material effect on the process otherwise.

         $on_kill->( $process )

AUTHOR

    Paul Evans <leonerd@leonerd.org.uk>

