gpt4 book ai didi

c - 什么会导致 gettimerid() 失败,将 errno 设置为 ENOSPC(未记录)?

转载 作者:太空狗 更新时间:2023-10-29 15:37:32 26 4
gpt4 key购买 nike

我正在使用 AIX 6.1。我正在使用(并参与开发)的程序包含对 C 库 gettimerid() 函数的调用。

我遇到的问题是 gettimerid() 调用开始间歇性失败,可能每天一次,返回 -1(表示错误),当我检查 errno,它已设置为 ENOSPC (28d),表示“设备上没有剩余空间”。

根据 the AIX documentation , ENOSPC 没有显示为可能的返回值之一,这让我对这意味着什么感到困惑。

据我所知,这不需要任何文件系统空间,但我检查了文件系统的未使用文件空间和 inode 使用情况,这些似乎没有问题,有足够的可用空间,而且就我而言告诉有足够的可用内存(尽管我不知道这个特定进程可能有一些限制,如果这是相关的),所以我不确定是什么导致 ENOSPC 被返回为gettimerid() 调用的结果。

示例代码:

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() 返回此代码?

最佳答案

可能是重复获取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 错误号。

关于c - 什么会导致 gettimerid() 失败,将 errno 设置为 ENOSPC(未记录)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48303211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com