回 帖 发 新 帖 刷新版面

主题:[讨论]请教一下大家read函数的用法

void Ctermios::ReadSerialPort()
{
int nread;
while(nread!=0)
{

printf("aaaaa11111");

while((nread=read(fd,buffR,511)>0))
{

printf("bbbbbbb2222");

printf("\nLen %d\n",nread);
buffR[nread+1]='\0';
printf("\n%s",buffR);
}
if (nread==-1)
{
printf("read error!\n");
exit(-1);
}

为什么aaaaaaa11111111能输出,而bbbbbb222222一直不会输出,是不是第二个人循环里的不会执行啊

大侠帮忙啊,着急!!!

回复列表 (共1个回复)

沙发

read如果是由信号中断引起返回,而且没有返回数据,read会返回-1,且设置errno为EINTR.当程序读到了文件结尾的时候,read会返回0.  

有可能你要读的数据小于你设置的511字节,而读到了文件结尾

我来回复

您尚未登录,请登录后再回复。点此登录或注册