日期:2014-05-18  浏览次数:20866 次

在C#做的GUI下终结一个CLI的程序进程的问题
各位大大:
原来有一个CLI的程序,写有对SIGTERM和SIGINT的处理函数,通过Ctrl+C结束改程序时,会触发一些结束前的处理工作,然后在终止进程。
现在需要用C#做一个B/S的GUI,启动该程序进程没问题,但终止该程序进程的时候,调用Process里的Kill(),或者用TerminateProcess(hProcess,   2)/TerminateProcess(hProcess,   15)都没有效果,ms都时直接关掉了,请问怎么才能实现类似于按了Ctrl+C的效果?谢谢

------解决方案--------------------
参见 < <windows核心编程> >

TerminateProcess 这个函数调用时,被终止进程不会得到任何信息.
所以它无法进行清理工作.

你可以考虑采用SendMessage,将Ctrl+C按键消息发给这个进程.