关于linux中的pause()函数

在一个进程中,有这么条语句for(;;;){pause();}什么意思啊
2025-02-23 20:01:41
推荐回答(2个)
回答1:

pause函数使调用进程挂起直至捕捉到一个信号。
#include
int pause(void);
返回:-1,errno设置为EINTR
只有执行了一个信号处理程序并从其返回时,pause才返回。
/*************************************
使用alarm函数定时,然后通过pause()等待alarm函数的信号。
1:使用alarm函数的时候要注意alarm函数的覆盖性,即在一个进程中采用一次alarm函数则该进程之前的alarm函数将失效。
2:pause函数为将进程挂起,然后等待信号。
3:因为alarm函数在定时器到点的时候产生的信号默认为让该进程退出。因此本代码运行5秒然后直接退出,终端不会输出printf中的语句。

tips:挂起和阻塞的区别为,挂起是进程主动行为,阻塞是进程的被动行为。
*************************************/
#include
#include
#include

int main(int argc,char *argv[])
{
int ret;

ret=alarm(5);
pause();
printf("will this be printed?\n");
}

#include
#include
#include
int main()
{
int ret;
ret=alarm(5);
pause();
printf("I have been waken up.\n",ret);
}

回答2:

这个函数是让程序暂停,直到等到有信号到来为止。
你这段程序实际就是一直等信号。