开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:Alarm 函数 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/11009
Alarm 函数
alarm 函数
kill 函数可以发信号,alarm 函数也可以发信号
#include
unsigned int alarm(unsigned int seconds) ;
alarm 函数参数是一个无符号整型,返回值也是一个无符号整型的
功能:
在 seconds 秒后,向调用进程发送一个 SIGALRM 信号,SIGALRM 信号的默认动作是终止调用 alarm 函数的进程。
alarm就是定时自杀。
返回值:
若以前没有设置过定时器,或设置的定时器已超时,返回0;否则返回定时器剩余的秒数,并重新设定定时器。
相当于定时炸弹,定好时是5秒后刚经过2秒又调了一次alarm重新去定时,返回值就是第二次alarm返回值就是3还剩3秒重新定时,只有一个闹钟。
例:02_ alarm.c
#include
#include
int main( int argc, char *argv[])
{
int seconds = 0;
seconds = alarm(5);
printf(" seconds = %d\n",seconds);
sleep(2);
seconds = alarm(5);
printf(" seconds = %d\n",seconds);
while(1);
return.0;
}
alarm 例子效果:
#include
#include
Int main ( int argc, char *argv[])
{
int seconds = 0;
seconds = alarm(5) ;
Printf ("seconds = %d\n", seconds);
sleep(2);
seconds = alarm(5) ;
printf (" seconds = %d\n", seconds) ;
while(1) ;
return 0 ;
}
第一个变量第一次定时 alarm 倒计时5秒因为没有定时器也没有定过时,第一次返回值为0,然后倒计时5秒刚过2秒又去 alarm 重新设定闹钟,第二次 alarm 的时候上一个闹钟还剩3秒所以第二个 second 是3,接下来 while 一循环,5秒之后会收到一个信号进程结束,相当于这个闹钟被重新设定。
3是返回值,是上一个闹钟还剩3秒,5秒钟之后收到信号,相当于一个闹钟被设了两次,第一次设好倒计时5刚过2秒就重新被倒计时,倒计时5秒到了之后收到一个信号当前进程。
转为UTF-8无BOM编码格式:
[02_day]gcc alarm.c -o alarm
[02_day]clear
[02_day]./alarm
seconds = 0(2秒钟之后返回3)
seconds = 3(5秒钟之后进程结束)
闹钟
[02_day]
alarm倒计时多少秒给当前进程发送一个 alarm 信号
注意转为UTF-8无BOM编码格式中的“闹钟”两字
当前进程收到一个信号就结束,它的父进程可以收到子进程的退出状态,知道子进程./运行的进程是因为收到 alarm 信号退出的,所以就打了一个“闹钟”。
注意:
使用 kill 函数发送信号,接收信号进程和发送信号进程的所有者必须相同,或者发送信号进程的所有者是超级用户。