刚开始学linux编程,有问题求助,非常感谢!!!!
/*select.c*/#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/time.h>
int main(void)
{
int fds;
char buf;
int i,rc,maxfd;
fd_set inset1,inset2;
struct timeval tv;
if((fds = open ("hello1", O_RDWR|O_CREAT,0666))<0)
perror("open hello1");
if((fds = open ("hello2", O_RDWR|O_CREAT,0666))<0)
perror("open hello2");
if((rc = write(fds,"Hello!n",7)))
printf("rc=%dn",rc);
lseek(fds,0,SEEK_SET);
maxfd = fds>fds ? fds : fds;
FD_ZERO(&inset1);
FD_SET(fds,&inset1);
FD_ZERO(&inset2);
FD_SET(fds,&inset2);
tv.tv_sec=2;
tv.tv_usec=0;
while(FD_ISSET(fds,&inset1)||FD_ISSET(fds,&inset2))
{
if(select(maxfd+1,&inset1,&inset2,NULL,&tv)<0)
perror("select");
else{
if(FD_ISSET(fds,&inset1))
{
rc = read(fds,buf,7);
if(rc>0)
{
buf='';
printf("read: %sn",buf);
}else
perror("read");
}
if(FD_ISSET(fds,&inset2))
{
rc = write(fds,buf,7);
if(rc>0)
{
buf='';
printf("rc=%d,write: %sn",rc,buf);
}else
perror("write");
sleep(10);
}
}
}
exit(0);
}
视频里历程,为啥视频里编出来是每隔10秒从文件1里读出一行写入文件2.我在Fedora里编完是只读一次然后每隔10s一直写入文件2同一个字符串。难道read函数是阻塞型的?读完一次就一直阻塞? hehe,新学?
同好
页:
[1]