#include <time.h>
#include <stdio.h>
void waitTime(long seconds, long nanoseconds) {
struct timespec req, rem;
req.tv_sec = seconds;
req.tv_nsec = nanoseconds;
if (nanosleep(&req, &rem) == -1) {
perror("nanosleep"); // Handle error appropriately
}
}
int main() {
printf(“Start\n”);
waitTime(1, 500000000L); // Waits for 1.5 seconds
printf(“End\n”);
return 0;
}
解释:
我们包含 <time.h> 和 <stdio.h> 头文件来使用 nanosleep 和 printf 函数。
waitTime 函数接受两个参数:一个是等待时间的秒数,另一个是等待时间的纳秒数。
struct timespec req, rem; 通过定义两个 timespec 结构来存储等待时间和剩余时间。
req.tv_sec = seconds; 和 req.tv_nsec = nanoseconds; 将传入的时间值赋给 timespec 结构的相应成员。
我们调用 nanosleep 函数并将 req 和 rem 结构的地址作为参数传递。如果 nanosleep 函数由于某种原因失败(例如,接收到一个信号),它将返回-1,并且rem 结构将包含剩余的未休眠时间。
如果 nanosleep 返回-1,我们调用 perror 函数来打印错误消息。
在 main 函数中,我们调用 waitTime 函数来等待1.5秒(1秒和500000000纳秒)。
这个函数是个简单且通用的等待时间函数,在实际使用时,你可能需要添加更多的错误处理和检查代码以使其更健壮。