Как убить процесс C ++ с помощью C ++ и позволить ему сделать что-то, прежде чем убить

Я пытаюсь контролировать процесс, который написан с использованием 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 Команда, которую я хотел бы сгенерировать
некоторый результат, записать их в файл, а затем убить

Так есть ли способ узнать, если другой процесс пытается убить
этот процесс, поэтому я веду его к функции записи файла

0

Решение

всякий раз, когда вы убиваете процесс, вы фактически отправляете ему сигнал (скорее всего, SIGKILL), поэтому все, что вам нужно сделать, — это назначить обработчик сигнала для этого конкретного сигнала, или вы можете иметь один и тот же для нескольких:

signal(SIGTERM, &terminateSigHandler);
signal(SIGKILL, &terminateSigHandler);

etc..
1

Другие решения

Как отметил @Alex Farber в своем комментарии, нет никакого способа для Process.Kill выполнить что-либо, прежде чем убить программу.

В этой ситуации я бы лично написал функцию, которая выполняет все, затем убивает процесс.

Пример:

private void killProcess()
{
[execute code here prior to killing the process]

process.Kill();
}
0

По вопросам рекламы [email protected]