【发布时间】:2018-04-12 11:41:34
【问题描述】:
我知道有人问过类似的问题,但我认为我的情况有点不同。我需要检查子线程是否还活着,如果它不是打印错误消息。子线程应该一直运行。所以基本上我只需要非阻塞 pthread_join 并且在我的情况下没有竞争条件。子线程可以被杀死,所以我不能在子线程完成时设置某种共享变量,因为在这种情况下不会设置它。
可以这样杀死子线程:
kill -9 child_pid
编辑:好吧,这个例子是错误的,但我仍然确定存在以某种方式杀死特定线程的方法。
编辑:我这样做的动机是在我的应用程序中实现需要此检查的另一层安全性。尽管可以绕过此检查,但那是另一回事了。
编辑:假设我的应用程序旨在作为逆向工程学生的演示。他们的任务是破解我的应用程序。但是我在子线程中设置了一些反黑客/反调试障碍。我想确保这个子线程保持活跃。正如一些 cmets 所提到的 - 在不弄乱父母的情况下杀死孩子可能并不容易,所以也许这个检查是没有必要的。主线程中也存在安全检查,但这次我需要将它们添加到另一个线程中以使主线程响应。
【问题讨论】:
-
我会考虑不同的设计。您可以拥有以例如结尾的线程更改(在某些互斥体下)全局标志。
-
但我不需要结束任何线程。我只是想确保我的从属线程仍然活着,并在它死后进行一些错误处理(不使用从属线程)。
-
解释线程将如何被杀死。在您的问题中显示一些minimal reproducible example。您需要大量改进您的问题,所以请编辑您的问题
-
子线程,还是子进程?
-
不能用
kill -9杀死线程。您一定在考虑流程。