This script calls another Perl script in the background using backticks and ampersand (`x_child.pl ... &`). The child script acts as a timeout check for the parent and will kill it if it's stuck for too long. Eventually, the parent will also kill the child script - using the shell's `ps -ef | grep x_child.pl ...` to locate the child's PID.

I need to replicate this behaviour under windows but wasn't able to find the tools:

1. using 'system(1, "perl x_child.pl...")' the script runs in the background, but I can't get it's PID.

2. using 'tasklist' doesn't seem to get the program's arguments to enable identifying a specific instance, or even the script's name (only 'perl.exe').

3. using 'open(GET_PID, "perl x_child.pl ...|")' I can communicate with the process and have it send back it's PID, but I can't have it run in the background.

C:\>perldoc -q timeoutFound in C:\Perl\lib\pods\perlfaq8.pod How do I timeout a slow event? Use the alarm() function, probably in conjunction with a signal handler, as documented in "Signals" in perlipc and the section on "Signals" in the Camel. You may instead use the more flexible Sys::AlarmCall module available from CPAN.

The alarm() function is not implemented on all versions of Windows. Check the documentation for your specific version of Perl.

C:\>perldoc -q timeoutFound in C:\Perl\lib\pods\perlfaq8.pod How do I timeout a slow event?Use the alarm() function, probably in conjunction with a signal handler, as documented in "Signals" in perlipc and the section on "Signals" in the Camel. You may instead use the more flexible Sys::AlarmCall module available from CPAN.

The alarm() function is not implemented on all versions of Windows. Check the documentation for your specific version of Perl.

Thanks.

This is a great solution and I learned something new.

However, I am currently limited to using Perl version 5.0.5, where alarm() is not supported.