Sat Apr 22 17:27:59 EDT 2023 Version 1.32 * Fix fatal bug in Win32 constructor from changes in 1.31 Mon Apr 17 14:33:00 EDT 2023 Version 1.31 * Allow { exe => undef } on Win32 for default OS determination of what to execute. * Avoid potential side effects from signal handlers when preparing to exec on Unix * Better perl 5.6 compatibility * Various documentation improvements 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 https://rt.cpan.org/Ticket/Display.html?id=47100 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 CPAN.pm, 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/Win32.pm (_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/Win32.pm: 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/Background.pm: 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/Background.pm: Fix all cases where a string containing '0' would fail a test even though it should pass. * lib/Proc/Background/Unix.pm: Ditto. * lib/Proc/Background/Win32.pm: 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 them. * 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/Background.pm: The $VERSION variable was being set using $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/Unix.pm: Ditto. * lib/Proc/Background/Win32.pm: 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/Background.pm: 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/Unix.pm: Ditto, except for _new, not new. * lib/Proc/Background/Win32.pm: Ditto, except for _new, not new. Thu Aug 16 14:00:41 PDT 2001 Blair Zajac * lib/Proc/Background.pm: 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/Background.pm: 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 script. * lib/Proc/Background/Unix.pm: Ditto. * lib/Proc/Background/Win32.pm: Ditto. Tue Aug 14 22:50:14 PDT 2001 Blair Zajac * lib/Proc/Background/Win32.pm: Remove an unnecessary loop label in _die. * lib/Proc/Background.pm: Update the documentation to be clearer. * 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 blair@orcaware.com. * CHANGES: Ditto. * lib/Proc/Background/Unix.pm: Ditto. * lib/Proc/Background/Win32.pm: Ditto. * lib/Proc/Background.pm: 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 Background.pm 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