我无法弄清楚如何在每3秒钟内显示一些东西(如hello world)。 我正在用gcc编译器在linux编写C编程。 我们可以通过Ctrl + c来停止它。 我只是想用我的项目来操作最简单最简单的方法。
提前谢谢你!
(Ubuntu 14.04)apt-get libopencv-dev,但得到的错误:无法纠正问题,你已经拿破碎的软件包
致命错误RC1015
如果getaddrinfo一旦失败就会失败(即使networking准备就绪后)
如何获得从shell调用的二进制文本段的基地址?
什么是开发应用程序的Windows“类名称”?
您可能会遇到一个问题,因为标准输出通常是缓冲的,这意味着实现会批量输出,直到写入方便。 如果你每三秒写出一次( sleep(3)是一个很好的方法),而且每三秒钟就不显示出来,请尝试放入fflush(stdout); 或用`fprintf(stderr,“something n”);写入标准错误输出。
while(1) { printf("somethingn"); sleep(3); }
sleep(3);
sleep功能会导致程序在返回之前等待X秒。 请注意,这是执行之间,所以它不会正好每隔3秒运行一次你的命令,但足够接近大多数的目的。 此外,有些平台已经usleep ,你代表微,这可以让你更多的决议。 请参阅手册页获取更多信息。
通用的方法是编写一个无限循环( while (1) { ... } )并暂停程序的执行。
要暂停,您可以使用标准库中的sleep功能。 sleep ,只能在几秒钟内指定睡眠时间,您可以使用nanosleep功能,使精度更高。
#include <stdio.h> #include <time.h> int main() { struct timespec t = { 3/*seconds*/,0/*nanoseconds*/}; while (1){ printf("Wait three seconds and...n"); nanosleep(&t,NULL); fflush(stdout); //see below } }
请注意,除非您为输出的字符串添加换行符( n ),否则最有可能看不到任何内容,因为该字符串首先被打印到缓冲区,并且该缓冲区偶尔会被刷新到终端(通常在打印时发生一个换行符,但即使这样也不能保证在每个系统上刷新)。 这就是为什么最好添加fflush调用。
只有远程相关,但我一直使用的技术是编写一个程序来显示一次,然后每隔n秒使用/usr/bin/watch重复一次。 我以这种方式获得更多的重用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。