如何使用c ++杀死c ++进程并让它在kill之前执行某些操作

时间:2014-12-01 10:07:02

标签: c# c++ process kill

我正在尝试控制使用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命令一样 一些结果,将它们写入文件然后杀死

那么有没有办法找出另一个进程是否试图杀死 这个过程让我把它引导到写文件函数

2 个答案:

答案 0 :(得分:1)

每当你杀死一个进程时,你实际上都在向它发送一个信号(最有可能是SIGKILL),所以你需要做的就是为那个特定的信号分配一个信号处理程序,或者你可以有几个相同的信号:

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

etc..

答案 1 :(得分:0)

正如@Alex Farber在评论中提到的那样,Process.Kill无法在杀死程序之前执行任何操作。

在这种情况下,我会亲自编写一个执行任何操作的函数,然后会终止该过程。

示例:

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

    process.Kill();
}