簡體   English   中英

希望線程在父級退出時不死-linux

[英]want thread to not die when parent exits - linux

我不想使用fork(),因為這增加了我希望避免的IPC管理層。 我想使用一個pthread。 我已經看到了克隆的痕跡,並且我不想開始在clone()詳細信息級別上管理線程。

為它們命名:A =主線程,B =工人線程。

我希望B能夠在A消失時從A獲得信號。 可以為此注冊atexit()。

A可能會從abort()甚至SIGSEGV或其他終端信號中消失。 B的工作全都與日志記錄有關:A和B與A創建的日志消息共享一個容器。如果A死了,我希望B完成日志記錄並然后退出。

現在,如果A退出,B退出,那么我將丟失日志隊列中剩余的所有內容。

所以我的問題是:是否有辦法使B更具彈性,使其粘在周圍而不死於A?

您似乎在混淆線程進程 按照您的描述方式,A是一個進程,而不是線程。 當調用abort()或遇到SIGSEGV且A退出時,B(進程A中包含的線程)也消失了。 沒辦法解決,因為B與A有着千絲萬縷的聯系。如果您希望某個進程比A生存更長的時間,則必須使用fork並創建一個新進程。

現在,您絕對可以在一個進程中擁有多個線程,並且線程B的生存時間可能超過創建它的線程A-prime,但是它們都屬於包含它們的進程,並且無法生存。

您可以為atexit和您期望的信號安裝處理程序(在A中),該處理程序將最終的“我在這里完成”消息推送到日志記錄隊列中,然后在退出整個過程之前與B聯接(等待)。

我想您希望使用pthread_attribute將線程創建為已分離。

https://computing.llnl.gov/tutorials/pthreads/

向您展示如何-只需搜索“獨立” :)它會在父項之后保留下來,之后您就可以使用它來做您想做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM