- 论坛徽章:
- 0
|
我的代码如下:
/* polldemo.c*/
#include <stdio.h>
#include <stropts.h>
#include <poll.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int i, n, fds[2];
struct pollfd pfds[2];
if (argc!=3)
{
fprintf(stderr, "use: polldemo File1 File2\n");
exit(1);
}
for (i=0;i<2 ;i++ )
{
if ((fds[i]=open(argv[i+1],O_RDONLY))<0)
{
perror(argv[i]);
exit(1);
}
else
printf("%s fds[%d]= %d\n", argv[i+1],i, fds[i]);
}
for (i=0;i<2 ;i++ )
{
pfds[i].fd=fds[i];
pfds[i].events=POLLIN;
}
n=poll(pfds, 2, 10*1000);
switch(n){
case -1:
perror("poll");
case 0:
printf("\n Timeout expired.\n");
break;
default:
printf("\n Data available %d\n", n);
}
return 0;
}
-----------------------------------------------
运行情况: 在 /dev/pts/0 上输入很快就有结果,但是在/dev/pts/1 上输入则有时有结果,有时没结果, 请问这是什么问题啊?
------------------------------------------------------------------------------------
[wanglt@sz-gw fileOP]$ polldemo /dev/pts/0 /dev/pts/1
/dev/pts/0 fds[0]= 3
/dev/pts/1 fds[1]= 4
Timeout expired.
[wanglt@sz-gw fileOP]$ polldemo /dev/pts/0 /dev/pts/1
/dev/pts/0 fds[0]= 3
/dev/pts/1 fds[1]= 4
Data available 1
[wanglt@sz-gw fileOP]$ polldemo /dev/pts/0 /dev/pts/1
/dev/pts/0 fds[0]= 3
/dev/pts/1 fds[1]= 4
Data available 1
[wanglt@sz-gw fileOP]$ polldemo /dev/pts/0 /dev/pts/1
/dev/pts/0 fds[0]= 3
/dev/pts/1 fds[1]= 4
Data available 1
[wanglt@sz-gw fileOP]$ polldemo /dev/pts/0 /dev/pts/1
/dev/pts/0 fds[0]= 3
/dev/pts/1 fds[1]= 4
Data available 1
[wanglt@sz-gw fileOP]$ polldemo /dev/pts/0 /dev/pts/1
/dev/pts/0 fds[0]= 3
/dev/pts/1 fds[1]= 4
Data available 1
[wanglt@sz-gw fileOP]$ polldemo /dev/pts/0 /dev/pts/1
/dev/pts/0 fds[0]= 3
/dev/pts/1 fds[1]= 4
sd
Data available 1
[wanglt@sz-gw fileOP]$ sd
bash: sd: command not found
[wanglt@sz-gw fileOP]$ polldemo /dev/pts/0 /dev/pts/1
/dev/pts/0 fds[0]= 3
/dev/pts/1 fds[1]= 4
Timeout expired.
[wanglt@sz-gw fileOP]$ |
|