0
我正在嘗試使C++ gRPC
服務器成爲一個守護進程,方法是分支一個子進程並讓其父進程退出。但之後,客戶端握手開始失敗。調用fork後gRPC服務器中的SSL握手失敗
E0307 01:15:58.221786152 27094 handshake.c:128] Security handshake failed:
{"created":"@1488878158.221756436","description":"Handshake read failed",
"file":"src/core/lib/security/transport/handshake.c",
"file_line":237,"referenced_errors":
[{"created":"@1488878158.221740996","description":"FD shutdown",
"file":"src/core/lib/iomgr/ev_epoll_linux.c","file_line":948}]}
這種情況發生時fork()
被調用BuildAndStart()
後調用。如果在BuildAndStart()
之前完成同樣的分支,一切正常。 我對基礎SSL實現以及gRPC服務器如何使用密鑰和證書行爲一無所知。
分岔早期工作正常。這允許父母在孩子開始在端口上收聽之前退出。客戶端可能會嘗試與尚未準備好的服務器建立連接。我試圖避免這種情況。但是,可以通過使用管道讓父母等待孩子指示何時準備好,從而解決問題。 – damleak
聽起來不錯。總是需要同步父母和孩子,而管道是一種方式。 –