我有非常简单的代码应该在后台运行,凌晨1点关闭计算机:
#include <ctime>
#include <cstdlib>
#include <unistd.h>
int main() {
time_t t;struct tm * now;
daemon(0,0);
while(1){
t = time(0);
now = localtime( & t );
if(now->tm_hour==1){
system("shutdown -P");
break;
}
sleep(10);
}
return 0;
}
代码在没有睡眠的情况下工作(10)但是使用整个空闲内存所以我需要睡眠功能来停止循环并每十秒重新检查一次,但是睡眠功能程序在我运行后立即停止。
答案 0 :(得分:1)
如果您正在编写C代码,请不要使用C ++标头(ctime
,cstdlib
)。将这些#include
替换为#include <stdlib.h>
和#include <time.h>
。如果这个代码的行为与您描述的一样(我会发现令人惊讶),那么这可能就是错误的来源。
答案 1 :(得分:1)
当然会立即退出。这就是使用daemon
的重点。查看ps
,您会看到您的proram现在仍在单独运行。
查看man page了解daemon
的工作原理。