NAME
    Sys::Trace - Interface to system call tracing interfaces

SYNOPSIS
      use Sys::Trace;

      my $trace = Sys::Trace->new(exec => [qw(ls foo)]);

      $trace->start; # Returns a PID which you can watch
      $trace->wait;  # Alternatively call this to wait on the PID

      my $result = $trace->results; # Returns a Sys::Trace::Results object

      use Cwd;
      print $result->files(getcwd . "/"); # Should show an attempt to look at "foo"
                                          # in the current directory (i.e. "ls
                                          # foo", above)

DESCRIPTION
    Provides a way to programmatically run or trace a program and see the
    system calls it makes.

    This can be useful during testing as a way to ensure a particular file
    is actually opened, or another hard to test interaction actually occurs.

    Currently supported tracing mechanisms are strace and ktrace.

METHODS
  new(%args)
    Keys in %args can be:

    *   exec: Program and arguments to execute

    *   pid: PID of program to trace

    Only one of exec or pid must be provided.

  start
    Start running the trace.

  wait
    Wait for the trace to finish

  results
    Return a Sys::Trace::Results object populated with the results of the
    trace.

BUGS
    This does what I wanted, it is probably woefully incomplete in places.

    See <http://github.com/dgl/perl-Sys-Trace>.

LICENSE
    This program is free software. It comes without any warranty, to the
    extent permitted by applicable law. You can redistribute it and/or
    modify it under the terms of the Do What The Fuck You Want To Public
    License, Version 2, as published by Sam Hocevar. See
    http://sam.zoy.org/wtfpl/COPYING or Software::License::WTFPL_2 for more
    details.

AUTHOR
    David Leadbeater <dgl@dgl.cx>, 2010

