2012-02-11 35 views
6

Tôi đã viết một ứng dụng bảng điều khiển nhỏ và tôi muốn tạm dừng trong một số giây nhất định trước khi chu kỳ (một lúc) bắt đầu lại.Chờ/Tạm dừng số giây trong C

Tôi đang làm việc trên hệ điều hành Windows.

+0

Tôi không nghĩ rằng 'giây' là một thẻ rất hữu ích. –

Trả lời

10

Trên Windows, chức năng để thực hiện việc này là Sleep, có số tiền là mili giây bạn muốn ngủ. Để sử dụng Sleep, bạn cần bao gồm windows.h.

On POSIX-Systems, chức năng sleep (từ unistd.h) thực hiện việc này:

unsigned int sleep(unsigned int seconds); 

    DESCRIPTION 
      sleep() makes the calling thread sleep until 
      seconds seconds have elapsed or a signal arrives which is not ignored. 

Nếu nó bị gián đoạn bởi một tín hiệu, thời gian còn lại để ngủ được trả về. Nếu bạn sử dụng tín hiệu, một giải pháp mạnh mẽ hơn sẽ là:

unsigned int time_to_sleep = 10; // sleep 10 seconds 
while(time_to_sleep) 
    time_to_sleep = sleep(time_to_sleep); 

Đây là khóa học giả định xử lý tín hiệu của bạn chỉ mất một lượng thời gian không đáng kể. (Nếu không, điều này sẽ làm chậm trễ chương trình chính dài hơn dự định)

+1

có vẻ như với Windows "sleep()" là không có. – Ldx

+3

Sleep() thay vì hoạt động ok, bao gồm Ldx

3

dễ dàng:

while(true) 
{ 
    // your stuff 
    sleep(10); // sleeping for 10 seconds 
}; 
+0

Việc vượt qua đối số 10 sẽ không cung cấp cho bạn 10 giây. – nicomp

0

On UNIX:

#include <unistd.h> 
sleep(10000); // 10 seconds 

On Windows:

#include <windows.h> 
Sleep(10000); // 10 seconds 

Lưu ý sự khác biệt giữa sleep() (UNIX) và Sleep() (Gió ows).

Các vấn đề liên quan