in reply to Re: killing on win32
in thread killing on win32

The problem is that the 'pid's returned by fork are not real pids, they are pseudo-fork perl-internal-use-only, negated thread ids, so they cannot be used with any of the win32 systems calls.

To be clear, the $pid used in the Win32::Process examples must be real, win32 process ids and Perl does not expose these.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

Replies are listed 'Best First'.
Re^3: killing on win32
by goibhniu (Hermit) on Sep 06, 2007 at 14:39 UTC

    When I want to kill processes manualy on w2003, I drop down to the command line and play with wmic process list (you could get started with wmic process list /?). At least one form of the output provides the ppid (parent process) as well as the real pid and the full command line. This makes me think you could walk up or down the tree of all pids and be pretty sure of identifying those that are yours and kill things from the bottom up.

    I haven't used it, but Win32::Process::Info::WMI seems to have the ability to query wmi programmatically to get this information. If that works, then all you'd have to worry about is how patched the particular win32 you're dealing with is and whether it has an up-to-date WMI.


    I humbly seek wisdom.

      Yes. You could produce a list of all process IDs in the system and then go killing them that way, but how are you going to work out which (system) process IDs relate to processes your daemon started?


      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

        When I'm doing it manually I rely heaviliy on the CommandLine info I get back from WMI, since I know what I started and with which arguments. That might work here.

        In this case I was thinking about using the real pid you said came from the forking open and identifying my own from chaining real pid to real ppid.


        I humbly seek wisdom.