Windows中的TerminateProcess函数是否可以挂起,因为进程内的线程陷入死锁?
示例:进程A在进程B的控制下运行,现在进程A陷入死锁,进程B检测到这一点,并决定使用TerminateProcess'杀死'进程A.
是否可以成功杀死悬挂的流程A?
答案 0 :(得分:4)
是的,将释放进程持有的所有内核对象,包括锁。
TerminateProcess的主要问题是该过程在此事上没有发言权:如果它持有任何全局状态(文件,共享内存等),那么您无法保证这些过程在进程后处于一致状态终止了。
答案 1 :(得分:0)
是。只要你拥有正确的权限,TerminateProcess
就会杀死其他进程,无论它有多好。
答案 2 :(得分:0)
TerminateProcess
将终止每个线程(就像在进程中的每个线程上都使用TerminateThread
一样)。
但它不会杀死内核中的线程(例如由于设备驱动程序错误)。