Я пытаюсь контролировать процесс, который написан с использованием C ++
с пользовательским интерфейсом Windows C #
сначала я запускаю процесс
private void button1_Click(object sender, EventArgs e)
{
Process myProcess = new Process();
myProcess.StartInfo.FileName = "filepath.exe";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();
}
Это запустит процесс
Теперь, после того как я запустил его на некоторое время, я хотел бы прекратить его
с помощью:
process.Kill();
Тем не менее, как и Ping
Команда, которую я хотел бы сгенерировать
некоторый результат, записать их в файл, а затем убить
Так есть ли способ узнать, если другой процесс пытается убить
этот процесс, поэтому я веду его к функции записи файла
всякий раз, когда вы убиваете процесс, вы фактически отправляете ему сигнал (скорее всего, SIGKILL), поэтому все, что вам нужно сделать, — это назначить обработчик сигнала для этого конкретного сигнала, или вы можете иметь один и тот же для нескольких:
signal(SIGTERM, &terminateSigHandler);
signal(SIGKILL, &terminateSigHandler);
etc..
Как отметил @Alex Farber в своем комментарии, нет никакого способа для Process.Kill
выполнить что-либо, прежде чем убить программу.
В этой ситуации я бы лично написал функцию, которая выполняет все, затем убивает процесс.
Пример:
private void killProcess()
{
[execute code here prior to killing the process]
process.Kill();
}