Я немного поиграл с твоим делом. Очевидно, запущены два cmd.exe, родитель с PID, возвращаемый open
, и его дочерний элемент выполняет команды
Второй сценарий частично работает, он убивает родителя, но ребенок продолжает работать. Используя параметр /T
для taskkill
, вы можете заставить его убить всех детей:
system("taskkill /F /T /pid $pid");
Вы увидите сообщение о завершении обоих процессов:
SUCCESS: The process with PID 3956 child of PID 1864 has been terminated.
SUCCESS: The process with PID 1864 child of PID 580 has been terminated.
Третий сценарий, кажется, работает нормально для меня. Закрытие дескриптора файла приводит к смерти обоих процессов CMD.