0

我有一个嵌入式应用程序,在 Linux 上作为单个进程运行。

sigaction()用来捕获问题,例如分段错误等。

该进程有几个线程,所有这些线程都应该像应用程序一样永远运行。

我的问题是我是否(以及如何)检测其中一个线程是否死亡。

线程中的段错误会被应用程序的sigaction()处理程序捕获吗?

我正在考虑使用pthread_cleanup_push/pop,但是这个页面说“如果进程中的任何线程调用 exit、_Exit 或 _exit,那么整个进程都会终止”,所以我想知道是否会在进程级别捕获线程死亡......</p >

4

1 回答 1

1

您不必检查子线程是否完成。如果您需要在子线程完成处理后做某事,您可以thread_join()从主线程调用,这样它会等到子线程完成执行,然后您可以完成其余的工作。如果您thread_exit在主线程中使用,一旦完成,它将被终止,让生成的线程继续执行。只有在所有线程完成执行后,该进程才会被终止。

如果要检查生成线程的状态,可以使用标志来检测它是否正在运行。检查此链接以获取更多详细信息

如何查询 pthread 以查看它是否仍在运行?

于 2016-07-01T09:27:56.927 回答