gpt4 book ai didi

c - 如何在 C Linux 中重置 alarm()

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

一旦 alarm(5) 或任何秒启动并运行,在程序中一段时间​​后,如果发生某些操作,我需要再次将警报重置为 alarm(5) 。我怎样才能做到这一点?

有可用的闹钟reset()吗?

int flag=0;
void alarmhand(int signal)
{
flag=1;
// printf("\n time out");
}

void main()
{
signal(SIGALRM,alarmhand);
alarm (5);
while(1)
{
event_status();
if(flag==1)
break;
}
}

void event_status()
{
int reset;
printf("reset 1=y/2=n :");
scanf("%d",&reset);
if(reset==1)
{
// alarm.reset(5);
// HOW DO I RESET THE ALARM AGAIN TO 5 HERE ??
}
}

最佳答案

您可以只设置新的闹钟,旧的闹钟将被取消:

alarm (5);

来自Linux alarm man page , 稍微解释一下):

alarm() arranges for a SIGALRM signal to be delivered to the calling process in a specified number of seconds.

If the specified number of seconds is zero, no new alarm is scheduled.

In any event any previously set alarm is canceled.

如前所述,任何当前警报都会在调用alarm() 之前被取消。如果 alarm() 的参数为零,则不会创建新的。

因此 alarm(0) 将取消任何当前事件的警报,而 alarm(5) 将创建一个新的警报,或将当前事件的警报重置为, 5 秒。

关于c - 如何在 C Linux 中重置 alarm(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15514350/

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