У меня есть приложение A, которое я хотел бы иметь возможность вызывать произвольные другие процессы, как указано пользователем в файле конфигурации.
Пакет script B - это один из таких процессов, который пользователь хотел бы вызывать A. B настраивает некоторые переменные среды, показывает некоторые сообщения и вызывает компилятор C для выполнения некоторой работы.
Предоставляется ли Windows стандартным способом для прекращения произвольных процессов? Предположим, что A запущен в консоли и получает CTRL + C. Может ли это передать это B и C? Предположим, что A работает в окне, и пользователь пытается закрыть окно, может ли он отменить B и C?
TerminateProcess - это вариант, но не очень хороший. Если A использует TerminateProcess на B, C продолжает работать. Это может вызвать неприятные проблемы, если C долго работает, поскольку мы можем запустить другой экземпляр C для работы с одними и теми же файлами, в то время как первый экземпляр C все еще работает тайно. Кроме того, TerminateProcess не приводит к чистому выходу.
GenerateConsoleCtrlEvent звучит неплохо и может работать, когда все работает в консоли, но в документации говорится, что вы можете отправлять CTRL + C только на свою собственную консоль, и поэтому не помогло бы, если бы A выполнялось в окне.
Есть ли эквивалент SIGINT в Windows? Мне бы очень хотелось найти статью, подобную этой: http://www.cons.org/cracauer/sigint.html для Windows.