gpt4 book ai didi

c - 中断的系统调用

转载 作者:太空宇宙 更新时间:2023-11-04 09:52:16 24 4
gpt4 key购买 nike

我有超过三个定时器从 main 运行,如下所示,我在 main 部分定义了一个消息队列。我的计时器的到期时间为 10(最大)。为什么当计时器到期时,“msgrcv”会出现“系统调用中断”之类的错误?

    timer_t timer1 = create_timer(TT_SIGUSR1);
install_sighandler(TT_SIGUSR1, signal_handler);
set_timer(timer1, TIME_INTERVAL_1);
-
-
-

flag = IPC_CREAT | 0666;
key = 1234;

msgqid = msgget(key,flag);
printf("msgqid = %d\n",msgqid);

while (1)
{
msgsz = msgrcv(msgqid, &sendMsg, sizeof(sendMsg), 0,0);
perror("prashant");

sleep(1);
}
return 0;

最佳答案

因为您可能将计时器设置为在它到期时向您发送信号。在某些系统调用被阻塞时接收信号将使所述系统调用失败并返回 errno = EINTR

The msgrcv() function shall fail if:

[EINTR]
The msgrcv() function was interrupted by a signal.

关于c - 中断的系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9632195/

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