satan 通过 Google 阅读器发送给您的内容:
于 12-6-20 通过 averiany涂鸦馆 作者:averainy
select()系统调用提供了一种实现同步I/O多路复用的机制,下面这个示例演示了select系统调用的过程
#include <sys/time.h> #include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #define TIMEOUT 5 /*select timeout in seconde*/ #define BUF_LEN 1024 /*read buffer in bytes */ int main(void) { struct timeval tv; fd_set readfds; int ret; /*Wait on stdin for input.*/ FD_ZERO(&readfds); FD_SET(STDIN_FILENO, &readfds); /*Wait up to five seconds.*/ tv.tv_sec=TIMEOUT; tv.tv_usec=0; /*ALL Right, now block! */ ret=select(STDIN_FILENO + 1, &readfds, NULL, NULL, &tv); if (ret==-1) { perror("select"); return 1; } else if (!ret) { printf("%d seconds elapsed,\n",TIMEOUT); return 0; } /* * Is out file descrptor ready to read? * (It must be, as it was the only fd that * we provided and the call returned * nonzero,but we will humor ourselves.) */ if (FD_ISSET(STDIN_FILENO,&readfds)){ char buf[BUF_LEN+1]; int len; /* guaranteed to not block */ len=read(STDIN_FILENO, buf, BUF_LEN); if (len== -1) { perror("read"); return 1; } if (len) { buf[len]='\0'; printf("read: %s\n",buf); } return 0; } fprintf(stderr, "This should not happen!\n"); return 1; }
这个例子是select的manpage里的,具体更具体的内容看一看man select
本文作者:averainy | 本文地址: 固定链接 | 我的腾讯微博|我的google+
本站文章除特殊标明者外均为原创,版权所有,如需转载,请以超链接形式注明作者和原始出处及本声明
相关日志
- 我的linux分区方案 (5)
- Tango3 SDK Bring-up Tutorial (0)
- linux用shell获取本机的IP地址 (0)
- 纪念下,终于编译成功了第一个内核 (2)
- 编译cs_rootfs提示"genext2fs: couldn't allocate a block (no free space)"error的解决办法 (1)
- linux shell 获取计算机公网IP地址的几种写法 (1)
- linux定时备份,删除上月备份的数据库脚本 (0)
- linux删除指定目录没有后缀的文件 (0)
- linux下rsync命令备份服务器时排除指定目录 (0)
- linux用grep和sed配合修改配置文件 (0)
可从此处完成的操作:
- 使用 Google 阅读器订阅averiany涂鸦馆
- 开始使用 Google 阅读器,轻松地与您喜爱的所有网站保持同步更新
没有评论:
发表评论