2025-11-08 05:34:24
咱们在C语言里用定时器函数主要是为了设定一个时间点或者时间间隔,当时间到了就自动干点事儿。比如说setitimer这个函数,它需要三个参数,一个是定时器类型、一个是超时时间、还有一个是回调函数地址。咱们设定好之后,系统就会在指定时间点或者间隔到的时候,自动去调用那个回调函数。比如咱们用秒来做单位,设置10秒后触发,这时候程序就会暂停执行,等10秒到了再继续干别的活儿。
为啥要这么设计呢?因为这样程序就能在特定时间点做事情,比如发送心跳包或者轮询数据。比如setitimer函数的第三个参数就是回调函数地址,当定时器到点的时候,系统就会去执行这个函数。比如说咱们设置了一个5秒的定时器,回调函数里写的是打印"时间到了",那每隔5秒就会自动打印一次。根据《C标准库参考手册》的数据,setitimer的第三个参数必须是有效的函数指针,否则会触发段错误。比如咱们写成void (cb)(void),这个cb只能是之前定义好的函数。而且超时时间单位是秒,如果写成5,那就是5秒,写成5.5的话就会报错。所以咱们在写的时候要注意单位只能是整数秒,回调函数也不能是空指针,不然程序会崩溃。
本题链接: