锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久国产精品一区二区,亚洲国产精品成人久久蜜臀 ,国产精品美女久久久mhttp://m.shnenglu.com/hoolee/category/20839.htmlIf you believe, you can!zh-cnWed, 26 Mar 2014 08:40:55 GMTWed, 26 Mar 2014 08:40:55 GMT60Linux select()鍑芥暟浣跨敤http://m.shnenglu.com/hoolee/archive/2014/03/26/206351.html灝忛紶鏍?/dc:creator>灝忛紶鏍?/author>Wed, 26 Mar 2014 08:25:00 GMThttp://m.shnenglu.com/hoolee/archive/2014/03/26/206351.htmlhttp://m.shnenglu.com/hoolee/comments/206351.htmlhttp://m.shnenglu.com/hoolee/archive/2014/03/26/206351.html#Feedback0http://m.shnenglu.com/hoolee/comments/commentRss/206351.htmlhttp://m.shnenglu.com/hoolee/services/trackbacks/206351.html

鍒╃敤select鍑芥暟鍙互瀹屾垚闈為樆濉為氫俊錛屽畠鍙互鍦ㄧ敤鎴鋒寚瀹氱殑鏃墮棿鍐呯洃鍚竴浜涘彞鏌勶紙鏂囦歡鎻忚堪絎︼紵錛夛紙涓涓彞鏌勫氨鏄綘緇欎竴涓枃浠訛紝璁懼錛屽鎺ュ瓧(socket)鎴栫閬撶殑涓涓悕瀛? 浠ヤ究甯姪浣犺浣忎綘姝e鐞嗙殑鍚嶅瓧, 騫墮殣钘忔煇浜涚紦瀛樼瓑鐨勫鏉傛с傦級錛屽綋readfds鎴杦ritefds涓槧璞$殑鏂囦歡鍙鎴栧彲鍐欐垨瓚呮椂錛屾湰嬈elect()灝辯粨鏉熻繑鍥炪傜▼搴忓憳鍒╃敤涓緇勭郴緇熸彁渚涚殑瀹忓湪select()緇撴潫鏃朵究鍙垽鏂摢涓鏂囦歡鍙鎴栧彲鍐欍?/p>

銆?/p>

鍑芥暟鍘熷瀷錛?

int select(int nfds, fd_set *readfds, fd_set *writefds,

fd_set *exceptfds, struct timeval *timeout);

ndfs錛歴elect鐩戣鐨勬枃浠跺彞鏌勬暟錛岃榪涚▼涓墦寮鐨勬枃浠舵暟鑰屽畾,涓鑸涓轟綘瑕佺洃瑙嗗悇鏂囦歡

涓殑鏈澶ф枃浠跺彿鍔犱竴銆?

readfds錛歴elect鐩戣鐨勫彲璇繪枃浠跺彞鏌勯泦鍚堛?

writefds: select鐩戣鐨勫彲鍐欐枃浠跺彞鏌勯泦鍚堛?

exceptfds錛歴elect鐩戣鐨勫紓甯告枃浠跺彞鏌勯泦鍚堛?

timeout錛氭湰嬈elect()鐨勮秴鏃剁粨鏉熸椂闂淬?/p>

鍑芥暟榪斿洖鍊鹼細

0琛ㄧず瓚呮椂

-1琛ㄧず鍑洪敊

姝f暟琛ㄧず鏂囦歡鍙鎴栧彲鍐?/p>


鐩稿叧鐨勫畯錛?/strong>

FD_ZERO(fd_set *fdset)錛氭竻絀篺dset涓庢墍鏈夋枃浠跺彞鏌勭殑鑱旂郴銆?

FD_SET(int fd, fd_set *fdset)錛氬緩绔嬫枃浠跺彞鏌刦d涓巉dset鐨勮仈緋匯?

FD_CLR(int fd, fd_set *fdset)錛氭竻闄ゆ枃浠跺彞鏌刦d涓巉dset鐨勮仈緋匯?

FD_ISSET(int fd, fd_set *fdset)錛氭鏌dset鑱旂郴鐨勬枃浠跺彞鏌刦d鏄惁鍙鍐欙紝褰?gt;0琛ㄧず鍙鍐欍?/p>


select鍙兘鐩戝惉鏂囦歡鎻忚堪絎︼紙file descriptors錛夛紝鏂囦歡鎸囬拡鏄笉琛岀殑銆傞氳繃int fileno(FILE* fp)鍑芥暟鍙互瀹屾垚鏂囦歡鎸囬拡鍒版枃浠舵弿榪扮鐨勮漿鎹€?/p>

#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#include
<sys/time.h>
#include
<sys/types.h>
#include
<unistd.h>

int main(){
    
int fno = fileno(stdin);
// 寰楀埌sdtin鐨勬枃浠舵弿榪扮
    fd_set fdR;
    
struct timeval timeout = {.tv_sec = 10, .tv_usec = 0};
    FD_ZERO(
&fdR);
    FD_SET(fno, 
&fdR);
    
char str[64];
    
int goOn = 1;
    
while(goOn){
        printf(
"goOning\n");
        
switch(select(fno + 1&fdR, NULL, NULL, &timeout)){
            
case -1:
                printf(
"select fail\n");
                goOn 
= 0;
                
break;
            
case 0:
                printf(
"select end\n");
                goOn 
= 0;
                
break;
            
default:
                scanf(
"%s", str);
                printf(
"str=%s\n", str);

        }
    }
}

浠g爜鐗囨錛戯細鍦ㄦ寚瀹氭椂闂村唴璇誨彇stdin鐨勬暟鎹?/p>


浠g爜鐗囨錛掞細鏈嶅姟鍣ㄥ湪涓瀹氭椂闂村唴鎺ユ敹瀛愯妭鐐瑰彂鏉ョ殑鏁版嵁鎶ャ?/p>


 

int socketfd = socket(AF_INET, SOCK_DGRAM, 0);
    …
    …
    fd_set fdR;
    
struct timeval timeout = {tv_sec:10, tv_usec:0};// 絳夊緟鎺ユ敹涓瀹氭椂闂翠箣鍚庣粨鏉?/span>
    int goOn = 1;
    FD_ZERO(
&fdR);
    FD_SET(sockfd, 
&fdR);
    
while(goOn){
    
switch(select(sockfd + 1&fdR, NULL, NULL, &timeout)){
        
case -1:
            printf(
"select fail\n");
            goOn 
= 0;
            
break;
        
case 0:
            printf(
"select timeout\n");
            goOn 
= 0;
            
break;
        
default:
// 姝e父鎯呭喌錛岃鍙栦俊鎭?/span>
            if((numbytes = recvfrom(sockfd, &cdt, sizeof(cdt), 0
                    (
struct sockaddr *)&their_addr, &addr_len)) == -1){
                printf(
"recvfrom fail\n");
            }
    }

鍙傞槄錛?br />http://www.tuicool.com/articles/Rfeaie

]]>
精品久久久久久国产免费了| 久久精品蜜芽亚洲国产AV| 九九99精品久久久久久| 97精品国产97久久久久久免费| 久久www免费人成精品香蕉| 久久综合亚洲色HEZYO社区| 久久婷婷五月综合色奶水99啪| 久久精品夜色噜噜亚洲A∨| 777午夜精品久久av蜜臀| 国产精品成人久久久久久久| 久久亚洲日韩看片无码| 99久久久国产精品免费无卡顿| 久久无码国产| AV无码久久久久不卡网站下载| 午夜精品久久久久| 国产精品伊人久久伊人电影| 亚洲精品无码久久久影院相关影片| 日韩精品久久久久久| 欧美黑人激情性久久| 久久久久亚洲AV无码观看| 很黄很污的网站久久mimi色| jizzjizz国产精品久久| 久久婷婷五月综合国产尤物app| 亚洲?V乱码久久精品蜜桃| 国产精品亚洲美女久久久| 久久99精品综合国产首页| 久久亚洲中文字幕精品有坂深雪| 无码任你躁久久久久久| 国产综合精品久久亚洲| 国产激情久久久久影院老熟女| 久久亚洲中文字幕精品有坂深雪| 国产69精品久久久久观看软件| 久久久久亚洲爆乳少妇无| 91精品国产91久久| 色综合久久中文综合网| 国产精品久久久久久搜索| 国产精品久久免费| 久久国产精品99久久久久久老狼 | Xx性欧美肥妇精品久久久久久| 久久精品午夜一区二区福利| 久久久老熟女一区二区三区|