我有一個守護進程分叉進程。C++守護進程分叉會導致mysql錯誤
該守護進程使用mysql連接庫訪問數據庫。
當我不叉,我能夠打開和讀取數據庫的罰款,然而,當我叉,我得到
MySQL server has gone away
錯誤始終在第一個查詢...
任何人知道什麼可能造成這種情況?
我有一個守護進程分叉進程。C++守護進程分叉會導致mysql錯誤
該守護進程使用mysql連接庫訪問數據庫。
當我不叉,我能夠打開和讀取數據庫的罰款,然而,當我叉,我得到
MySQL server has gone away
錯誤始終在第一個查詢...
任何人知道什麼可能造成這種情況?
編輯哦,我對之間的守護進程的/非進程化,曲解
仍與差異的問題道歉,大致有以下類的選項:
分離標準輸入/輸出造成麻煩(IMO這將意味着設計不佳的庫,但我是誰)
觀看特定資源(文件鎖定,套接字連接,線程(!))的不通過fork/EXEC繼承ve。我建議你閱讀鏈接的系統守護進程(下同),尤其是例如在「互斥和運行一個單一副本[開放,提供lockf,GETPID]」一節
我敢肯定,我忘了的東西
呃...你是什麼啓動一個MySQL服務器進程? Mysql有大量可靠的初始化腳本,可以工作。
在適當的系統守護進程的主題:用叉子兒童(例如文件描述符)資源共享的效果http://www.enderunix.org/docs/eng/daemon.php
留意。
除此之外,你可能只是缺少基本的環境設置。仔細閱讀mysql的官方init腳本,找出你需要的。
你是什麼意思開始一個MySQL服務器進程?我正在做我自己的守護進程,只是使用MySQL連接庫來訪問數據庫。我不會在fork之前保留任何文件描述符。我需要的一切都是在分叉後創建的。 – user623879
對不起,誤解了。更多的背景信息更新的答案 – sehe
我禁用stdin /標準輸出/ stderr..apparently MySQL連接器依賴於此ffs ...感謝提及! – user623879