6.10.1 pause函数

6.10.1 pause函数

pause函数将调用线程挂起,使进程进入可中断的睡眠状态,直到传递了一个信号为止。

这个信号的动作或者是执行用户定义的信号处理函数,或者是终止进程。

如果是执行用户自定义的信号处理函数,那么pause会在信号处理函数执行完毕后返回;

如果是终止进程,pause函数就不返回了。

如果内核发出的信号被忽略,那么进程就不会被唤醒。

pause函数的定义如下:

int pause (void);

比较有意思的是,pause函数如果可以返回,那它总是返回-1,并且errno为EINTR。

如果希望pause函数等待某个特定的信号,就必须确定哪个信号会让pause返回

事实上,pause并不能主动区分使pause返回的信号是不是正在等待的信号,我们必须间接地完成这个任务。

常用的方法是,在期待的特定信号的信号处理函数中,将某变量的值设置为1,待pause返回后,通过查看该变量的值是否为1来判定等待的特定信号是否被捕获,方法如下面的代码所示:

static volatile sig_atomic_t sig_received_flag = 0;
while(sig_received_flag == 0)
	pause();

如果只有等待的那个信号的处理函数会将sig_received_flag置成1,那么进程就会一直阻塞,直到接收

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Keil v6.10.1是一种集成开发环境(IDE),由ARM公司开发。它主要用于嵌入式系统的软件开发,包括编译、调试和分析等功能。 Keil v6.10.1具有许多特点和优势。首先,它支持多种编程语言,包括C和汇编语言。这使得开发人员能够根据项目的需求选择适当的语言来编写代码。其次,Keil v6.10.1提供了直观、易于使用的用户界面,使开发人员能够更轻松地编辑、编译和调试代码。 此外,Keil v6.10.1还提供了强大的调试功能。它支持多种调试器,包括仿真器和调试代理器,使得开发人员能够对代码进行逐步调试、观察变量值和寄存器状态等操作。此外,Keil v6.10.1还提供了实时跟踪功能,可以用于分析和排查代码中的问题。 Keil v6.10.1还具有高度的可移植性。它支持不同的嵌入式处理器和操作系统,包括ARM Cortex-M系列处理器和实时操作系统(RTOS),使开发人员能够在不同的平台上开发和调试嵌入式应用程序。此外,Keil v6.10.1还提供了许多嵌入式开发工具和库,包括设备驱动程序、算法库和通信协议栈等。 总之,Keil v6.10.1是一种功能强大、易于使用的嵌入式开发环境。它提供了丰富的功能和工具,使开发人员能够更高效地开发、调试和分析嵌入式系统的软件。无论是初学者还是经验丰富的开发人员,都可以从Keil v6.10.1的优势中受益,并加快嵌入式开发的进程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值