如何用C语言封装一个延时函数?
众所周知,C语言有很多库函数可以拿来直接用,就例如:没错就这 {:10_305:} Sleep()于是我脑洞大开,想自己封装一个来耍耍,结果延时函数没封装出来,人就要先封了{:10_250:}
题目:实现l类似Sleep()功能,封装一个延时函数 Sleep() 单位是秒
.......
.....
...
麻烦知道的鱼友,顺便讲解讲解一下其中的原理,谢谢{:10_291:} 本帖最后由 dolly_yos2 于 2023-2-8 21:45 编辑
可以看看手册,里面提了一些实现方式
https://man7.org/linux/man-pages/man3/sleep.3.html
https://man7.org/linux/man-pages/man3/sleep.3p.html
(这个好像说的是 sleep 而不是 Sleep,算了不管了) https://blog.csdn.net/zhoutianzi12/article/details/103438079 dolly_yos2 发表于 2023-2-8 21:44
可以看看手册,里面提了一些实现方式
https://man7.org/linux/man-pages/man3/sleep.3.html
https://man7 ...
是sleep() 写成大写了不好意思{:10_278:} int sleep(long t )
{
clock_t st=clock();
while(t>clock()-st);
return 0;
} #include <stdio.h>
#include <signal.h>
#include <unistd.h>
void handler(int signo) {}
void sleep_(size_t second) {
signal(SIGALRM, handler);
alarm(second);
sigset_t set;
sigfillset(&set);
sigdelset(&set, SIGALRM);
sigsuspend(&set);
}
int main(void) {
printf("hello world!\n");
sleep_(3);
printf("hello world!\n");
sleep_(3);
printf("hello world!\n");
//while(1);
return 0;
}
ba21 发表于 2023-2-8 21:52
https://blog.csdn.net/zhoutianzi12/article/details/103438079
谢谢 但是这个不是理想中的答案 https://cn.bing.com/search?q=linux%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8+sleep&qs=n&form=QBRE&sp=-1&pq=linux%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8+sleep&sc=10-15&sk=&cvid=F9F1B67703DE4918A65D44C1A0ADCFE0&ghsh=0&ghacc=0&ghpl=
https://www.cnblogs.com/charlesblc/p/6492582.html#:~:text=sleep%20%28%29%E5%92%8Cnanosleep%20%28%29%E9%83%BD%E6%98%AF%E4%BD%BF%E8%BF%9B%E7%A8%8B%E7%9D%A1%E7%9C%A0%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%E5%90%8E%E8%A2%AB%E5%94%A4%E9%86%92%EF%BC%8C%E4%BD%86%E6%98%AF%E4%BA%8C%E8%80%85%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%AE%8C%E5%85%A8%E4%B8%8D%E5%90%8C%E3%80%82.%20Linux%E4%B8%AD%E5%B9%B6%E6%B2%A1%E6%9C%89%E6%8F%90%E4%BE%9B%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8sleep%20%28%29%EF%BC%8Csleep%20%28%29%E6%98%AF%E5%9C%A8%E5%BA%93%E5%87%BD%E6%95%B0%E4%B8%AD%E5%AE%9E%E7%8E%B0%E7%9A%84%EF%BC%8C%E5%AE%83%E6%98%AF%E9%80%9A%E8%BF%87%E8%B0%83%E7%94%A8alarm,%28%29%E6%9D%A5%E8%AE%BE%E5%AE%9A%E6%8A%A5%E8%AD%A6%E6%97%B6%E9%97%B4%EF%BC%8C%E8%B0%83%E7%94%A8sigsuspend%20%28%29%E5%B0%86%E8%BF%9B%E7%A8%8B%E6%8C%82%E8%B5%B7%E5%9C%A8%E4%BF%A1%E5%8F%B7SIGALARM%E4%B8%8A%EF%BC%8Csleep%20%28%29%E5%8F%AA%E8%83%BD%E7%B2%BE%E7%A1%AE%E5%88%B0%E7%A7%92%E7%BA%A7%E4%B8%8A%E3%80%82.%20nanosleep%20%28%29%E5%88%99%E6%98%AFLinux%E4%B8%AD%E7%9A%84%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8%EF%BC%8C%E5%AE%83%E6%98%AF%E4%BD%BF%E7%94%A8%E5%AE%9A%E6%97%B6%E5%99%A8%E6%9D%A5%E5%AE%9E%E7%8E%B0%E7%9A%84%EF%BC%8C%E8%AF%A5%E8%B0%83%E7%94%A8%E4%BD%BF%E8%B0%83%E7%94%A8%E8%BF%9B%E7%A8%8B%E7%9D%A1%E7%9C%A0%EF%BC%8C%E5%B9%B6%E5%BE%80%E5%AE%9A%E6%97%B6%E5%99%A8%E9%98%9F%E5%88%97%E4%B8%8A%E5%8A%A0%E5%85%A5%E4%B8%80%E4%B8%AAtimer_list%E5%9E%8B%E5%AE%9A%E6%97%B6%E5%99%A8%EF%BC%8Ctime_list%E7%BB%93%E6%9E%84%E9%87%8C%E5%8C%85%E6%8B%AC%E5%94%A4%E9%86%92%E6%97%B6%E9%97%B4%E4%BB%A5%E5%8F%8A%E5%94%A4%E9%86%92%E5%90%8E%E6%89%A7%E8%A1%8C%E7%9A%84%E5%87%BD%E6%95%B0%EF%BC%8C%E9%80%9A%E8%BF%87nanosleep%20%28%29%E5%8A%A0%E5%85%A5%E7%9A%84%E5%AE%9A%E6%97%B6%E5%99%A8%E7%9A%84%E6%89%A7%E8%A1%8C%E5%87%BD%E6%95%B0%E4%BB%85%E4%BB%85%E5%AE%8C%E6%88%90%E5%94%A4%E9%86%92%E5%BD%93%E5%89%8D%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%8A%9F%E8%83%BD%E3%80%82.%20
人造人 发表于 2023-2-8 22:10
哇哦谢谢{:10_315:} {:10_256:}我也来学习下 {:10_245:}{:10_245:}{:10_245:}{:10_245:}非洲人啊 人造人 发表于 2023-2-8 22:10
大佬有 Windows 下实现延时函数封装的吗? 学习了{:10_254:}{:10_254:}{:10_254:} 做最好的自己520 发表于 2023-2-9 12:02
大佬有 Windows 下实现延时函数封装的吗?
https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-sleep
Sleep 就是 Windows 提供的 API,暂停当前线程的执行一段时间,在 Windows 上的 sleep 可能可以用 Sleep 直接实现
( sleep 也不是 C 语言里的,而是 POSIX 的) 学习一下 学习一下 学习 学习一下{:10_256:} dolly_yos2 发表于 2023-2-9 15:47
https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-sleep
Sleep 就是 Windows ...
这样啊 谢谢{:10_257:} 所以到底是啥,运用clock不行嘛{:10_256:}
页:
[1]
2