Subject: Re: problems in Perl process management
From: Jurgen Defurne <[email-masked]>
To: Sonam Chauhan <[email-masked]>
Cc: [email-masked]
Date: Tue, 10 May 2005 13:12:05 +0200

I also would like to know if it is possible.

However, it could be that it has nothing to do with Cygwin. I have
a Perl script which forks several children and monitors their output.

If a child fails, then it has no use to run all forked processes further
and I kill them with the perl 'kill' command. However, I also notice that
deeper forked processes (grandchildren) refuse to die. This
script is only run using ActiveState Perl.

I think it is really a serious Windows problem, because using
the task manager it also seems not really possible to kill a complete
process hierarchy.

Regards,

Jurgen Defurne

Sonam Chauhan <[email-masked]>
Sent by: 
[email-masked]
2005-05-10 10:41 AM
 
        To:     "[email-masked]'" <[email-masked]>
        cc:     (bcc: Jurgen Defurne/BRG/CE/PHILIPS)
        Subject:        problems in Perl process management
        Classification: 

Hello - 

I'd appreciate help with problems doing process management in Cygwin/Perl. 

I have a Perl application that creates child processes - I need it to kill
processes that exceed a certain timeout. I am trying to use the
Proc::ProcessTable and Proc::Killfam CPAN modules for this.

I ran into two problems: 

The first problem was a "can't stat /dev" error message produced when
calling Proc::Killfam. This problem was fixed by a script I found that
populated entries under /dev. 

To understand the next probem, have a look at the simple test script
attached. The script forks a child process, which runs `sleep` in a third
process. The parent process then tries to kill both children on expiry of 
a
timeout. The script behaves perfectly on Linux -- it works as expected and
kills the fork-ed child Perl process, as well it's `sleep` child process.
However, on Cygwin/Perl it only kills the fork-ed Perl child - it cannot
kill the `sleep`-ing child. 

The problem seems to be that the process table data returned by
Proc::ProcessTable seems to differ from the data returned 'ps'.
Specifically, Proc::ProcessTable returns the WINPID of a process as the 
PID
for the backticked `sleep` process. 

The closest issue I found in the list archives is this one: 
        http://sourceware.org/ml/cygwin/2005-02/msg00224.html 
It does not seem to have been resolved. 

I'm running Perl on Cygwin on Windows XP SP2. Running 'cygcheck -c' gives
the following package status for cygwin and Perl:
--------------------------
cygwin  1.5.16-1   OK
perl    5.8.6-4    OK
--------------------------

Can anyone help?

Regards,
Sonam Chauhan
-- 
Electronic Commerce, Corporate Express Australia Ltd.
Phone: +61-2-9335-0725, Email: [email-masked]

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/
--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/