2014-12-01 1 views
0

Я пытаюсь контролировать процесс, который написан с использованием C++ с # пользовательским интерфейсом окна Cкак убить гр процесс ++ с использованием C++ и дайте ему сделать что-то прежде, чем HTE убить

первым я запустить процесс

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

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

+1

Настроить обработчик сигнала. –

+1

Process.Kill не дает возможности процессу ничего делать. Используйте некоторую межпроцессную связь (самый простой - это использование событий имен) и реализуйте это с обеих сторон. –

ответ

0

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

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

Пример:

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

    process.Kill(); 
} 
1

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

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

etc.. 
+0

Возможно, это из ваших знаний, но это работает и на других языках (а именно на C++)? – cybermonkey

+0

Я не уверен, что у меня вопрос; мой ответ для вопроса C++ .... – Pandrei

+0

@cybermonkey Я использую это все время, чтобы изящно сбивать процессы для всех видов ситуаций. – Pandrei