我找到了最后幾個錯誤的部分解決方案,我所做的只是創建一個執行緒池,而不是創建新執行緒并在每個連接中殺死它們。現在我沒有那些奇怪的錯誤,但我遇到了下面列出的問題。
我正在我的 raspberry pi 上使用 C 網路服務器,我能夠處理多個網頁請求,但是當客戶端決定非常快速地重新加載頁面時,在幾次重新加載后,網路服務器崩潰并且 gdb 給了我錯誤:“斷管”。
這是服務器的代碼:https : //hastebin.com/wuzepotiko.c
我認為問題可能出在讀取錯誤處理上,因為當我使用 gdb 時,它給了我錯誤:
Thread 13 "webServer" received signal SIGPIPE, Broken pipe.
[Switching to Thread 0xb161f440 (LWP 23260)]
__libc_write (nbytes=0, buf=0x22cc0 <httpResponse>, fd=7)
at ../sysdeps/unix/sysv/linux/write.c:26
26 ../sysdeps/unix/sysv/linux/write.c: No such file or directory.
我知道這是一大堆代碼,但我已經堅持了一段時間了。即使有人能指出我正確的方向,我也會非常感激!
uj5u.com熱心網友回復:
我找到了這個問題的答案。由于 write 函式向內核發送了一個管道損壞錯誤,它告訴內核退出行程,我使用了 send 函式,它允許我阻止信號發送到內核,現在它可以作業了!感謝所有幫助我解決問題的人!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/337794.html
