如何自杀一个控制台的应用程序?

我有一个控制台应用程序创build/启动其他subprocess。 我需要检查一下,如果它本身或他的ProcessChilds死锁,并杀死关联进程树的最年轻。

有了这个目标,他的进程孩子可能有相同的“recursion”algorithm。

这个想法并不是要杀死最年轻的过程,而是要通过命令让自己最年轻的自杀(某种说法)。

有没有一种方法可以在stream程内部调用一个asynchronous方法(也许和他的孩子应该存在相同的方法)来做到这一点?

当然,我可以使用该文件的一个持久性文件和一个“WatchDog / KeepAliveLook”,当它不存在的时候,它会自动执行(自杀),但我相信有一个更清晰的方法可以做到这一点。

Solutions Collecting From Web of "如何自杀一个控制台的应用程序?"

我会使用一些进程间通信(远程处理,WCF,命名管道,窗口事件,DDE等)的方法发送通知“吃毒丸”。 更大的问题是,你为什么这样设计? 听起来有点古老和陈旧的建筑。

如果一个进程完全死锁,那么你不能使用它的任何线程。 您需要(在外部)在该进程内创建一个新的线程,这只能通过Windows的调试API完成。

如果你想杀死一个孩子的过程,为什么不直接杀死它,而是要求它自杀呢?