---
name: "Proc::Guard"
section: "3pm"
platform: "linux"
package: "libproc-guard-perl"
version: "0.07-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Proc::Guard"
---

# Proc::Guard(3pm)

process runner with RAII pattern

## NAME

Proc::Guard - process runner with RAII pattern

## SYNOPSIS

```
    use Test::TCP qw/empty_port wait_port/;
    use File::Which qw/which/;
    use Proc::Guard;
    my $port = empty_port();
    my $proc = proc_guard(scalar(which('memcached')), '-p', $port);
    wait_port($port);
    # your code here
    # --------------
    # or, use perl code
    my $proc = proc_guard(sub {
        ... # run this code in child process
    });
    ...
```

## DESCRIPTION

Proc::Guard runs process, and destroys it when the perl script exits.

This is useful for testing code working with server process.

## FUNCTIONS

- proc\_guard(@cmdline\|\\&code)

  This is shorthand for:

  ```
      Proc::Guard->new(
          command => \@cmdline,
      );
  ```

  or

  ```
      Proc::Guard->new(
          code => \&code,
      );
  ```

## METHODS

- my $proc = Proc::Guard-\>new(%args);

  Create and run a process. The process is terminated when the returned object is being DESTROYed.

  - command

    ```
        Proc::Guard->new(command => '/path/to/memcached');
        # or
        Proc::Guard->new(command => ['/path/to/memcached', '-p', '11211']);
    ```

    The command line.

  - code

    ```
        Proc::Guard->new(code => sub { ... });
    ```

    'code' or 'command' is required.

  - auto\_start

    ```
        Proc::Guard->new(auto_start => 0);
    ```

    Start child process automatically or not(default: 1).

- pid

  Returns process id (or undef if not running).

- start

  Starts process.

- stop

  Stops process.

## VARIABLES

- $Proc::Guard::EXIT\_STATUS

  The last exit status code by `"$proc->stop"`.  If `"waitpid"` failed with an error, this will be set to `"undef"`.

## AUTHOR

Tokuhiro Matsuno \<tokuhirom AAJKLFJEF GMAIL COM\>

## LICENSE

Copyright (C) Tokuhiro Matsuno

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
