首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

关于EINTR解决办法

2012-02-28 
关于EINTR程序被中断以后,断点重启?从被中断的这个函数重新启动?还是?[解决办法]应该是从被中断的函数重新

关于EINTR
程序被中断以后,断点重启?   从被中断的这个函数重新启动?   还是?

[解决办法]
应该是从被中断的函数重新启动.
[解决办法]
如果被调用的函数会修改参数,从设置这些参数的语句开始,例如经典的Unix select系统调用:
for( ;; )
{
tv.tv_sec = 30;
tv.tv_usec = 0;
FD_ZERO( &rfds );
FD_SET( sockfd, &readmask );

switch( ret = select( sockfd + 1, &rfds, NULL, NULL, &tv ) )
{
case 0:
return TIMEOUT;
case -1:
if ( (errno == EINTR) )
continue;
return BROKEN;
default:
if ( FD_ISSET( sockfd, &rfds ) )
{
...
}
}
}

热点排行