IO复用 select Demo

来源:互联网 发布:中国帝国 知乎 编辑:程序博客网 时间:2024/06/10 13:26

1 等待键盘输入,输出读入的字节数和读入的内容

#include <sys/types.h>#include <sys/time.h>#include <stdio.h>#include <fcntl.h>#include <sys/ioctl.h>#include <unistd.h>#include <stdlib.h>int main(){    char buffer[11111];    int result,nread;    fd_set inputs, testfds;    struct timeval timeout;    FD_ZERO(&inputs);    FD_SET(0,&inputs);    while (true)    {        testfds = inputs;        timeout.tv_sec = 2;        timeout.tv_usec = 5000;        result = select(FD_SETSIZE,&testfds,(fd_set *)0,(fd_set *)0,&timeout);        switch(result)        {            case 0:                printf("timeout\n");                break;            case -1:                perror("select");                break;            default:                if (FD_ISSET(0,&testfds))                {                    ioctl(0, FIONREAD, &nread);                    if (nread == 0)                    {                        printf("done\n");                        exit(0);                    }                    nread = read(0,buffer,nread);                    buffer[nread] = 0;                    printf("read %d from keyboard: %s\n",nread,buffer);                }                break;        }    }    return 0;}
0 0
原创粉丝点击