PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] select 問題
作者:
tccheart
(123)
2015-03-19 17:38:21
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
android jni c++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
小弟最近使用android 的jni 寫 c的 socket
我是client端 除了主執行緒外開了一條thread , 用select傳入NULL去咬住等資料進來
(不設timeout)
但當我要結束連線的時候 select函數仍然咬著 主執行緒切不斷
請問有無方法在主執行緒 讓這個select wake up 然後再斷線 ?
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
res = select(sockfd + 1, &infd, &outfd, &errfd, NULL);
補充說明(Supplement):
作者: LiloHuang (十年一刻)
2015-03-19 17:49:00
如果要用 blocking I/O,已經開 thread 就直接 recv 吧不曉得那些是 blocking 的 fd 還是 non-blocking 的 fd一般是 select 搭配 timeout + while loop with flag真的要暴力停止的話,可以送一個 signal 給該 thread此時 select 就應該會退出 blocking state,返回 EINTR推文一請忽略,我想你應該是要等待一個以上的 fd :P
作者:
kingofsdtw
(ä¸èƒ½é–’下來!!)
2015-03-19 23:43:00
實作一個data controler, if(open(temp_control))
作者: chubiei (:))
2015-03-19 23:43:00
送signal給thread, select自然就會跳出來了
作者: LiloHuang (十年一刻)
2015-03-19 23:53:00
記得 Android 上也有 pselect,用 pselect 更方便處理這兒有完整的範例程式碼
http://goo.gl/H2DkXm
作者: asxz87 ( )
2015-03-19 23:54:00
加個dummy/signal sockfd到infd, send data讓select被trigger
作者:
Killercat
(殺人貓™)
2015-03-20 01:14:00
select要用signal殺 不過既然都用C++了 用asio吧
作者: tccheart (123)
2015-03-20 17:44:00
謝謝各位大大!
繼續閱讀
[問題] 指數加了轉型後取ceil()結果不同
yea107
[問題] dev-c++新手求幫助
opl164
[問題] array^
newlymoon
[問題] Xcode compile課本source code 一直fail
KAINTS
[問題] C++聲音處理 音高
dracb
[問題] ODBC錯誤碼 IM005發生的原因@@?
BIAO
[問題] 函數指標的void*參數個數可不定?
aMaa
[問題] vector size回傳異常
cknick
[問題] C++ 開檔案就是慢? 還是處理程序問題?
xthe
[問題] MFC read txt and transfer to EXCEL
rarr
Links
booklink
Contact Us: admin [ a t ] ucptt.com