我怎样才能让我的程序休眠一段时间?

how can i make my program sleep for some amount of time?

我想让我的程序休眠一段时间。但我也希望,如果按下回车键,程序就会唤醒。

clock_t t;
int sleep_time=10;
t=clock();
while(1){
int temp=clock()-t;
double time_now=(double)(temp)/CLOCKS_PER_SEC;
    if(time_now>=sleep_time){
       break;
    }
    if(getchar()=='\n'){
       break;
    }

}

但是这个程序会等待输入,如果没有输入它也不会中断 我该怎么做。

在 POSIX 平台上,您可以在标准输入和超时参数上使用 select()/poll()

#include <sys/select.h>
#include <unistd.h>
int main(void)
{
    fd_set inp; FD_ZERO(&inp); FD_SET(STDIN_FILENO,&inp);
    select(1,&inp,0,0,&(struct timeval){.tv_sec=1});
}

启用信号处理程序后,您还需要注意 EINTR 并在剩余时间内重做请求。

不幸的是,您不能指望 select()poll() 给您剩余的时间(select 可以并且将在 Linux,通过 struct timeval* 参数,但该行为不可移植),因此您需要使用 clock_gettime 自行计算。