[問題] linux socket程式會造成死當
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux Redhat + GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
都是常見的socket函式
問題(Question):
這問題從去年困擾到現在
不過過去比較忙沒專心處理 現在要解決這個問題
問題就是這個程式運作下去後 會無預期的死當
死當的情況是螢幕畫面停留在最後一刻 不再更新
滑鼠游標無反映 用別台電腦ping不到這台死當的host
可能跟我用sudo有關
希望能找出為什麼讓電腦死當的原因(linux會死當讓我覺得很奇怪)
我寫的這個linux程式 用途是做為中繼站轉送資料 像這樣:
A--my--B
A會一直產生資料(A不只一個)
my是我寫的socket程式
B是轉送的目的地(B不只一個)
主要用select讓單執行緒完成這些工作
我的程式沒有用到memory allocate 陣列都是靜態的
這邊列出所有會用到的function跟用途
socket 建構socket
setsockopt 設定socket的reuse
bind socket綁定port
listen 監聽socket
accept 接收新連線
inet_ntop 得到新連線的IP跟port
close 關閉連線
send 轉送data (有使用MSG_NOSIGNAL的flag)
read 讀取data
ioctl 取得socket的buffer大小 做流量控制用
select 檢查每個socket是否有動靜
FD_ZERO 輔助select機制
FD_SET 輔助select機制
FD_ISSET 輔助select機制
FD_CLR 輔助select機制
整隻程式約600多行 也沒有很大
也有用Valgrind檢查是否有memory leak
結果是沒有 警告數0
因為其中一個綁定的port是1023以下
所以執行的時候需要用sudo
我看了很多遍了 看不出哪個function會讓linux整個死當
或是我有什麼更好的debug方法呢
請有經驗的前輩提供意見了
預期的正確結果(Expected Output):
預期運作下去是不會當機的
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.118.127.111
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1400206709.A.E09.html
※ 編輯: neko0624 (140.118.127.111), 05/16/2014 10:20:24
→
05/16 13:07, , 1F
05/16 13:07, 1F
→
05/16 13:16, , 2F
05/16 13:16, 2F
→
05/16 16:03, , 3F
05/16 16:03, 3F
→
05/16 16:05, , 4F
05/16 16:05, 4F
→
05/16 16:05, , 5F
05/16 16:05, 5F
推
05/17 00:11, , 6F
05/17 00:11, 6F
→
05/17 05:50, , 7F
05/17 05:50, 7F
→
05/19 12:48, , 8F
05/19 12:48, 8F
→
05/19 12:48, , 9F
05/19 12:48, 9F
→
05/19 20:09, , 10F
05/19 20:09, 10F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章