什么会导致 gettimerid() 失败,将 errno 设置为 ENOSPC(未记录)?
What could cause gettimerid() to fail, setting errno to ENOSPC (undocumented)?
我正在使用 AIX 6.1。我正在使用(并参与开发)的程序包含对 C 库 gettimerid()
函数的调用。
我遇到的问题是 gettimerid()
呼叫可能每天一次间歇性失败,returning -1(指示错误),当我检查 errno
, 已经设置为 ENOSPC
(28d), 即 "No space left on device".
根据 the AIX documentation,ENOSPC
未显示为可能的 return 值之一,这让我对这意味着什么感到困惑。
据我所知,这不需要任何文件系统space,但我检查了未使用的文件space和文件系统的inode使用情况,这些似乎没问题有足够的可用内存,据我所知有足够的可用内存(尽管我不知道这个特定过程可能有一些限制,如果这是相关的),所以我不确定是什么导致 ENOSPC
因 gettimerid()
调用而被 return 编辑。
示例代码:
static timer_t TimerId;
if ( ( TimerId = gettimerid(TIMEOFDAY, 0) ) < 0 )
{
printf( "gettimerid fail [timer id=%d, errno=%d]", TimerId, errno );
}
示例输出:
gettimerid fail [timer id=-1, errno=28]
有谁知道是什么原因导致 AIX 上 gettimerid()
的 return 代码?
可能是重复获取TIMEOFDAY
定时器而中间没有调用reltimerid
造成的。作为导致它的例子:
while( 1 )
{
timer_t TimerId;
if( ( TimerId = gettimerid( TIMEOFDAY, 0 ) ) < 0 )
{
printf( "gettimerid failed: %d\n", errno );
break;
}
else
printf( "gettimerid OK: %d\n", TimerId );
}
这个循环的输出是:
gettimerid OK: 5
gettimerid OK: 6
gettimerid OK: 7
gettimerid OK: 8
gettimerid failed: 28
哪个是未记录的 ENOSPC
错误号。
我正在使用 AIX 6.1。我正在使用(并参与开发)的程序包含对 C 库 gettimerid()
函数的调用。
我遇到的问题是 gettimerid()
呼叫可能每天一次间歇性失败,returning -1(指示错误),当我检查 errno
, 已经设置为 ENOSPC
(28d), 即 "No space left on device".
根据 the AIX documentation,ENOSPC
未显示为可能的 return 值之一,这让我对这意味着什么感到困惑。
据我所知,这不需要任何文件系统space,但我检查了未使用的文件space和文件系统的inode使用情况,这些似乎没问题有足够的可用内存,据我所知有足够的可用内存(尽管我不知道这个特定过程可能有一些限制,如果这是相关的),所以我不确定是什么导致 ENOSPC
因 gettimerid()
调用而被 return 编辑。
示例代码:
static timer_t TimerId;
if ( ( TimerId = gettimerid(TIMEOFDAY, 0) ) < 0 )
{
printf( "gettimerid fail [timer id=%d, errno=%d]", TimerId, errno );
}
示例输出:
gettimerid fail [timer id=-1, errno=28]
有谁知道是什么原因导致 AIX 上 gettimerid()
的 return 代码?
可能是重复获取TIMEOFDAY
定时器而中间没有调用reltimerid
造成的。作为导致它的例子:
while( 1 )
{
timer_t TimerId;
if( ( TimerId = gettimerid( TIMEOFDAY, 0 ) ) < 0 )
{
printf( "gettimerid failed: %d\n", errno );
break;
}
else
printf( "gettimerid OK: %d\n", TimerId );
}
这个循环的输出是:
gettimerid OK: 5
gettimerid OK: 6
gettimerid OK: 7
gettimerid OK: 8
gettimerid failed: 28
哪个是未记录的 ENOSPC
错误号。