锘??xml version="1.0" encoding="utf-8" standalone="yes"?>精品国产乱码久久久久软件,久久久人妻精品无码一区 ,国産精品久久久久久久http://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

]]>
久久婷婷午色综合夜啪| 免费一级欧美大片久久网 | 伊人伊成久久人综合网777| 久久精品人人做人人爽电影| 97久久超碰国产精品旧版| 精品国产99久久久久久麻豆| 91精品国产91久久久久久青草| 午夜精品久久久久久毛片| 亚洲欧洲久久久精品| 久久精品无码av| 无码乱码观看精品久久| 久久亚洲精品无码观看不卡| 性欧美丰满熟妇XXXX性久久久 | 青青久久精品国产免费看 | 91麻豆精品国产91久久久久久| 久久久久亚洲国产| 国产亚州精品女人久久久久久| 亚洲午夜福利精品久久| 亚洲成人精品久久| 五月丁香综合激情六月久久| 亚洲午夜精品久久久久久人妖| 国产日韩欧美久久| 欧美伊香蕉久久综合类网站| 久久ZYZ资源站无码中文动漫| 中文字幕久久亚洲一区| 久久精品无码av| 国内精品欧美久久精品| 国产精品久久99| 久久精品国产亚洲av高清漫画 | 精品久久无码中文字幕| 亚洲中文字幕无码久久精品1 | 中文精品久久久久人妻| 国产精品熟女福利久久AV| 99久久婷婷国产综合精品草原 | 香港aa三级久久三级| 久久ZYZ资源站无码中文动漫| 伊人久久大香线蕉综合Av | 久久人人妻人人爽人人爽| 久久av无码专区亚洲av桃花岛| 精品久久久久久久久中文字幕| 精品免费久久久久国产一区|