锘??xml version="1.0" encoding="utf-8" standalone="yes"?>精品国产乱码久久久久软件,久久久人妻精品无码一区 ,国産精品久久久久久久http://www.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://www.shnenglu.com/hoolee/archive/2014/03/26/206351.html灝忛紶鏍?/dc:creator>灝忛紶鏍?/author>Wed, 26 Mar 2014 08:25:00 GMThttp://www.shnenglu.com/hoolee/archive/2014/03/26/206351.htmlhttp://www.shnenglu.com/hoolee/comments/206351.htmlhttp://www.shnenglu.com/hoolee/archive/2014/03/26/206351.html#Feedback0http://www.shnenglu.com/hoolee/comments/commentRss/206351.htmlhttp://www.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

]]>
国内精品久久久久久久影视麻豆| 久久久国产精华液| 久久ZYZ资源站无码中文动漫| 久久精品国产91久久综合麻豆自制 | 伊人色综合久久天天人手人婷| 精品伊人久久久| 久久精品国产精品青草app| 香蕉aa三级久久毛片| AV狠狠色丁香婷婷综合久久| 久久亚洲精品无码观看不卡| 国产精品久久久久国产A级| 免费一级欧美大片久久网| 国产成人久久AV免费| 久久SE精品一区二区| 久久精品中文字幕第23页| www.久久精品| 无码伊人66久久大杳蕉网站谷歌| 久久久WWW成人免费精品| 国产欧美久久一区二区| 久久精品毛片免费观看| 久久久久av无码免费网| 久久人妻少妇嫩草AV蜜桃| 久久亚洲精品中文字幕三区| 亚洲精品高清国产一线久久| 无码乱码观看精品久久| 久久无码精品一区二区三区| 丁香久久婷婷国产午夜视频| 久久99精品综合国产首页| 国内精品久久久久久野外| 99精品国产在热久久无毒不卡| 精品综合久久久久久98| 亚洲级αV无码毛片久久精品| 久久99九九国产免费看小说| 伊人精品久久久久7777| 亚洲国产香蕉人人爽成AV片久久| 久久久久久国产精品无码下载| 久久午夜综合久久| 亚洲国产一成久久精品国产成人综合| 老司机午夜网站国内精品久久久久久久久 | 久久精品一区二区三区AV| 精品久久久无码中文字幕天天|