No, and no.
First, obvious from my text: I asked for a portable way. A command which only works on Windows doesn't help.
Second, not obvious from my text: My program spawns several processes, all using the same program name, all running simultaneously. I need control which of them I terminate, and the filter offered by taskkill is insufficient to distinguish between these.
| [reply] |
> My program spawns several processes
Correction: it spawns several pseudo-processes on windows which are all emulated inside the main process.
That's also why taskkill can't work, the $child_id you get from fork is meaningless for the OS.
https://perldoc.perl.org/perlfork#SYNOPSIS
On some platforms such as Windows where the fork() system call is not available, Perl can be built to emulate fork() at the interpreter level. While the emulation is designed to be as compatible as possible with the real fork() at the level of the Perl program, there are certain important differences that stem from the fact that all the pseudo child "processes" created this way live in the same real process as far as the operating system is concerned.
| [reply] [d/l] [select] |
The OP wrote
> The PID returned from fork is apparently useless. When I kill 1 $child_pid, the main process complains Terminating
Did you test your "solution" against his setting?
| [reply] |