Wed Oct 20 15:38:00 JST 2021

  Version 1.30

  * New options 'command','exe' dis-ambiguate the problems around
    determining how to parse the command line and determine the
    executable name.  It also allows faking argv[0].  They can be
    inspected after program launch via same-named attributes.
  * New options 'stdin','stdout','stderr' allow initializing handles
    of the child process.
  * New option 'cwd' sets initial current directory of the child
  * Renamed '->die' to '->terminate' and options 'die_upon_destroy'
    to 'autoterminate' (but preserved back-compat)
  * Option 'autoterminate' now has an attribute accessor and can be
    toggled on the fly.
  * New option 'autodie' throws exceptions from constructor instead
    of returning undef.
  * On Unix, use a pipe to capture error messages all the way through
    to the exec() call.  Reap exec() failures without exposing the
    forked process to the user.
  * Add methods ->suspend and ->resume
  * Mitigate bug in timeout_system where a system clock change could
    increase the wait-time indefinitely.

Fri Jul  9 07:33:00 JST 2021

  Version 1.22

  * Fix bug in timeout of $p->wait on Unix perl earlier than 5.12
    where Time::HiRes::alarm was failing to set the alarm.
  * Fix test case 47 (which was failing on about 5% of systems)
    by waiting longer for the process to exit

Tue Nov  5 17:39:00 EST 2019

  Version 1.21

  * Fix bug in timeout_system that caused it to wait the maximum
    duration on every call.

Sun Nov  3 19:34:00 EST 2019

  Version 1.20

  * More correct parsing of Win32 arguments to determine
    executable name, and more correct quoting when building
    command line when starting from an argv.
  * More correct use of Unix signals during ->die, but also give
    user the ability to specify a custom sequence of signals.
  * Emulate Unix exit status of SIGKILL on Win32 when process was
    ended using $proc->Kill
  * New attributes ->exit_code and ->exit_signal help inspect the
    wstat value returned by ->wait.
  * Fix Win32 path separator used when searching %PATH% for exe
  * Don't leak changes to $? when calling ->die() during DESTROY
  * Make sure all die_upon_destroy happens before global destruction
  * Re-tooled with Dist::Zilla for modern generation of MYMETA and
    automatic version, license, etc.

Sun Jul  5 15:40:32 PDT 2009

	* Release version 1.10.

Sun Jul  5 15:15:12 PDT 2009

	* Makefile.PL: Resolve by passing
	  PREREQ_PM to WriteMakefile().
	  Patch by: Tomas Doran <>

Wed Jul  1 22:58:13 PDT 2009

	* README: Correct the URL to the Subversion repository for
	  this project.

Wed Jul  1 22:46:11 PDT 2009

	* Release version 1.09.

Wed Jul  1 22:36:06 PDT 2009

	* Makefile.PL: Switch from die() to warn() if Win32::Process
	  isn't installed into a warning. When running under,
	  the die causes the install to fail before processing
	  dependencies.  Reducing this to a warning means that CPAN
	  will cleanly install Proc::Background and Win32::Process
	  with no user intervention needed in strawberry perl or even
	  ActiveState if you have a working make.
	  Patch by: Tomas Doran <>

Sat Dec  7 09:41:58 PST 2002

	* Release version 1.08.

Sat Dec  7 09:33:53 PST 2002 <> Blair Zajac

	* lib/Proc/Background/ (_new): When more than one
	  argument is passed to _new in @_, each array element may be
	  quoted to protect whitespace so that the final assembly of
	  the individual arguments into one string, using "@_", that
	  is passed to Win32::Process::Create works.  An empty string
	  was not being protected and was lost from the command line
	  arguments.  Bug fix by Jim Hahn <>.
	* README: Note that this package is hosted in a Subversion
	  repository and give its URL.
	* Changes: Renamed from CHANGES.

Sat Apr 20 19:27:53 PDT 2002 <> Blair Zajac

	* Release version 1.07.

Sat Apr 20 18:55:46 PDT 2002 <> Blair Zajac

	* lib/Proc/Background/ Fix a bug spotted by John
	  Kingsley <> on Windows platforms where if
	  Proc::Background->new is passed an absolute pathname to a
	  program containing whitespace, then Win32::Process::Create
	  will not be able to create the new process.  The solution is
	  use Win32::GetShortPathName to convert the long pathname
	  into a short pathname with no spaces.  Also eval "use
	  Win32' to load Win32::GetShortPathName.

Sat Apr 20 18:35:57 PDT 2002 <> Blair Zajac

	* lib/Proc/ Fix a bug spotted by Ruben Diez
	  <> in _resolve_path where if one of the
	  directories in the PATH had a directory with the same name
	  as the program being searched for, the directory would be
	  used because they typically have execute permissions.  Now
	  check for a file and the execute permissions before using
	  the file.

Sat Apr 20 18:19:27 PDT 2002 <> Blair Zajac

	* lib/Proc/ Fix all cases where a string
	  containing '0' would fail a test even though it should pass.
	* lib/Proc/Background/ Ditto.
	* lib/Proc/Background/ Ditto.

Sat Sep  8 12:20:01 PDT 2001 <> Blair Zajac

	* Release version 1.06.

Sat Sep  8 12:19:39 PDT 2001 <> Blair Zajac

	* t/01proc.t: On Cygwin test 46 fails intermittently when it
	  tries to see if the spawned process is running by using
	  kill(0, $pid).  It's not clear why this would happen, but
	  sometimes kill returns 0, even though the process should be
	  running.  Maybe it's the Cygwin layer that is causing the
	  problem.  Adding a one second sleep before calling kill
	  seems to cause the test to pass.
	* t/sleep_exit.t: The sleep argument was being set to 1 even
	  if the command line argument was 0 because $sleep was
	  checked for trueness, not if it was defined.  Now check
	  $sleep and $exit_status for being defined before setting
	* README: Update the instructions for checking and installing
	  Win32::Process for Perl on Windows.

Tue Aug 28 12:54:44 PDT 2001 <> Blair Zajac

	* Release version 1.05.

Tue Aug 28 12:34:15 PDT 2001 <> Blair Zajac

	* lib/Proc/ The $VERSION variable was being set

	  $VERSION = substr q$Revision: 1.05 $, 10;'

	  which did not properly set $VERSION to a numeric value in
	  Perl 5.6.1 probably due to the trailing ' ' character after
	  the number.  This resulted in 'use Proc::Background
	  1.04' failing to force Perl to use version 1.04 or newer of
	  Proc::Background even if 1.03 or older was installed because
	  $VERSION was set using substr and Perl would not consider
	  $VERSION to be set.  Now use the longer but effective:

	  $VERSION = sprintf '%d.%02d', '$Revision: 1.05 $' =~ /(\d+)\.(\d+)/;

	* lib/Proc/Background/ Ditto.
	* lib/Proc/Background/ Ditto.

Thu Aug 16 14:36:39 PDT 2001 <> Blair Zajac

	* Release version 1.04.

Thu Aug 16 14:29:14 PDT 2001 <> Blair Zajac

	* lib/Proc/ When new is passed an incorrect
	  number of arguments, do confess using the class passed to
	  new, rather use the hardwired Proc::Background class which
	  will make error messages easier to understand since module
	  complaining about the error will be the correct one.
	* lib/Proc/Background/ Ditto, except for _new, not
	* lib/Proc/Background/ Ditto, except for _new, not

Thu Aug 16 14:00:41 PDT 2001 <> Blair Zajac

	* lib/Proc/ Proc::Background::new can accept a
	  reference to a hash as its first argument which contains
	  key/value pairs to modify Proc::Background's behavior.
	  Currently the only key understood is `die_upon_destroy'
	  which has the process killed via die() when the
	  Proc::Background object is being DESTROY'ed.
	* t/01proc.t: Add tests to test the new options behavior.

Thu Aug 16 13:30:23 PDT 2001 <> Blair Zajac

	* lib/Proc/ No longer use cluck and return undef
	  to warn about invalid arguments to function calls.  Instead
	  just call confess to print the call stack and quit the
	* lib/Proc/Background/ Ditto.
	* lib/Proc/Background/ Ditto.

Tue Aug 14 22:50:14 PDT 2001 <> Blair Zajac

	* lib/Proc/Background/ Remove an unnecessary loop
	  label in _die.
	* lib/Proc/ Update the documentation to be
	* README: Remove the reference to my FTP site, as it is no
	  longer being used.
	* README: Update all references to Blair Zajac's email
	  addresses to
	* CHANGES: Ditto.
	* lib/Proc/Background/ Ditto.
	* lib/Proc/Background/ Ditto.
	* lib/Proc/ Ditto.

Sun Feb  4 13:54:37 PST 2001 <> Blair Zajac

	* Release version 1.03.

Sun Feb  4 11:50:15 PST 2001 <> Blair Zajac

	* Add a new command line option to timed-process, -e, that
	  takes an integer argument.  This value sets the exit value
	  timed-process uses for its exit call when it has to kill the
	  given program because the timeout elapsed.  This value is
	  not used if the process exits before the timeout expires.
	* t/01proc.t: Add tests for for the timed-process script.

Sat Feb  3 14:21:32 PST 2001 <> Blair Zajac

	* Change all occurrences of Proc::Generic, which was the
	  original name of this module, with Proc::Background in every
	  file in the module.  This includes fixing the timed-process
	  script which used Proc::Generic instead of Proc::Background.

Mon Jan 15 16:05:04 PST 2001 <> Blair Zajac

	* Release version 1.02.

Mon Jan 15 10:32:59 PST 2001 <> Blair Zajac

	* Make Proc::Background::new flexible enough to behave in the
	  same manner as exec() or system() do when passed either a
	  single or multiple arguments.  When the command to put in
	  the background run is passed as an array with two or more
	  elements, run the command directly without passing the
	  command through the shell.  When a single argument is passed
	  to Proc::Background::new, pass the command through the
	  shell. Add a new test to the test suite to check a command
	  passed as a single argument to Proc::Background::new.
	* Remove 'Unrecognized escape \w passed through at line 30' warning when using Perl 5.6.0.

Wed Jun 21 09:51:37 PDT 2000 <> Blair Zajac

	* Release version 1.01.

Wed Jun 21 09:47:33 PDT 2000 <> Blair Zajac

	* Proc::Background::Win32 used to only protect arguments that
	  contained he space character by placing "'s around the
	  argument.  Now, make sure that each individual argument to
	  Proc::Backgrond ends up going to the Windows shell in such a
	  way that the shell sees the argument as a single
	  argument. This means escaping "'s that are not already
	  escaped and placing "'s around the argument if it matches
	  \s.  This will protect the string if it finds a \s in it and
	  not just a space.

Thu Apr 20 14:46:31 PDT 2000 <> Blair Zajac

	* Release version 1.00.

Thu Apr 20 14:40:11 PDT 2000 <> Blair Zajac

	* In certain circumstances on older Perls, Proc::Background
	  would complain that @_ could not be modified since it is a
	  read only variable.  Make a copy of @_ and modify that.

Wed Apr 19 19:50:51 PDT 2000 <> Blair Zajac

	* Release version 0.03.

Wed Apr 19 14:47:58 PDT 2000 <> Blair Zajac

	* Relax the requirement that the path to the program has to be
	  absolute.  If it is not absolute, then look for the absolute
	  location of the program.

	* Add a new method named pid that returns the process ID of
	  the new process.

Sun Jun 28 12:43:39 PDT 1998 <> Blair Zajac

	* Release version 0.02.

Tue Jun 23 15:13:13 PDT 1998 <> Blair Zajac

	* Restructure the die method.  Keep the OS independent code
	  for killing a process in Proc::Background and the OS
	  dependent killing code in Proc::Background::*.
	* Update the POD for Proc::Background to be more explicit
	  about what start_time and end_time return.
	* Fix bugs in Proc::Background::Win32.
	* Update Makefile.PL to check for Win32::Process installed on
	  Win32 systems.

Thu Jun 18 14:52:01 PDT 1998 <> Blair Zajac

	* Update the README to indicate that libwin32 is only needed
	  on Win32 systems.
	* Remove calls to croak or die.  Call cluck instead.
	* Fix the implementation documentation.
	* Remove Proc::Background::Win32::alive since
	  Proc::Background::alive works.

Thu Apr 24 12:00:00 PDT 1998 <> Blair Zajac

	* Version 0.01