linux下c程式 daemon、fork與建立pthread的順序問題

來源:互聯網
上載者:User

標籤:linux

最近發現在寫linux c服務程式的時候,daemon與線程建立之間出現問題。發現程式在daemon之後,起的線程就全掛了。

查過一些文檔之後,終於知道了why.

daemon函數的操作其實很簡單,

1.fork一個進程,2.處理3個標準輸入輸出資料流

做完之後,主進程就退出了,實際啟動並執行是子進程。子進程會被掛在init進程上,也就是pid為1的進程。

問題就發生在這個daemon的時間點。

如果在pthread初始化了線程之後,再進行daemon,子進程不會擁有之前的線程,相反之前的線程會隨著主進程一起結束掉。

所以正確的順序是:

daemon -----> pthread create

同樣的問題也發生在fork上,正確的順序是

fork -------> 子進程pthread create,父進程退出

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.