for(;;)
{
...// CPU usage and etc...
printf("Server is up: %.0f sec\n",diff_time); //seconds of running for example
sleep(1);
}
...//other server code
我正在编写服务器程序。我需要每1秒输出一次有关CPU使用率的信息等... 上面的代码有效,但循环后的服务器代码永远不会完成。 任何人都知道如何用每秒钟会做的事情来替换这个无限循环? 不幸的是,没有线程和子进程。任何其他想法。
答案 0 :(得分:1)
如果服务器正在接受连接,您可以使用select()
/ poll()
/ epoll_wait()
等待可读事件。
您可以选择使用定时等待事件,在超时后您将进行定时处理。或者,您可以使用间隔计时器(请参阅setitmer()
)。对于后者,您的警报信号处理程序可以通过写入pipe来唤醒您的轮询等待,其中也正在等待它的读取结束以进行可读事件。
答案 1 :(得分:1)
答案 2 :(得分:0)
没有线程?甚至不是POSIX threads?好吧,我能想到的另一种方式是:
/*
* Pseudocode.
* The purpose is to model what the code might look like.
*/
#include <time.h>
#include <stdio.h>
/* Initialization */
time_t t0 = time(0);
while (serverRunning) {
/* Server code */
if (difftime(time(0), t0) >= 60.0) {
t0 = time(0);
/* Print information here */
printf("Info");
printf("More Info");
printf("Even More Info");
}
}
但这是假设您的骨干在C中开始。您能提供更多信息吗?