Мне нужно, чтобы моя программа была в спящем режиме в Windows. В каком файле заголовка есть функция сна?
Используйте:
#include Sleep (sometime_in_millisecs); //Обратите внимание на верхний регистр S
А вот небольшой пример, который компилируется с MinGW и делает то, что написано на банке:
#include #include int main () {printf ("начало засыпания ... n"); Сон (3000); //Спящий три секунды printf ("сон закончился n");}
SleepEx
(см. http://msdn.microsoft.com/en-us/library/ms686307.aspx) — лучший выбор если ваша программа прямо или косвенно создает окна (например, используйте некоторые COM-объекты). В простых случаях вы также можете использовать Sleep
.
SleepEx
функция (см. http://msdn.microsoft.com/en-us/library /ms686307.aspx) — лучший выбор, если ваша программа прямо или косвенно создает окна (например, использует некоторые COM-объекты). В простых случаях вы также можете использовать Sleep
.
MSDN: Заголовок: Winbase.h (включая Windows.h)

-
1Когда я включаю windows. h мой компилятор выдает «ошибка: имя параметра пропущено» и «ошибка: ожидаемое выражение перед ‘,’ токеном» — RYN 31 июля 2010 г., 17:40
-
@Snigger Разместите короткий пример, демонстрирующий это, и расскажите нам какой компилятор вы используете. — анон. 31 июля 2010, 17:42
-
#include void writeData (результат * res, char OUT) {} int main () {return 1; } дает «error: expected ‘)’ before ‘‘ token», и я использую GCC (mingw) — RYN 31 июля 2010 г., 17:48
-
@Snigger Ваша программа не объявляет тип «результат» — ничего общего с окнами или спать. и он не выдает сообщения об ошибках, которые вы сказали (он дает другие). — анон 31 июля ’10 в 17:58
-
5Это НЕ обсуждение/комментарии к моему ответу. Это совершенно косвенное обсуждение, которое требует отдельного ответа. — abelenky 31 июля ’10, в 19:55
MSDN: Header: Winbase.h (включая Windows.h)
Включите следующую функцию в начале ваш код, когда вы хотите быть занятым, подождите. Это отличается от сна, потому что процесс будет использовать 100% ЦП во время работы этой функции.
void sleep (unsigned int mseconds) {clock_t goal = mseconds + clock ( ); while (goal> clock ());}
Обратите внимание, что имя sleep
для этой функции вводит в заблуждение, так как CPU не будет спать вообще.

-
151. Это не отвечает на вопросы автора. 2. Это просто неправильно, потому что это все еще цикл занятости (с циклом for или без него). — Нико Хайдтке, 7 января 2015, 13:30
-
1голосование «за». Я искал какую-то функцию сна в Windows C, кроме Sleep (). Это нормально работает. Благодарю. — rashok 20 марта ’15 в 16:35
-
10Это не спящий режим, это означает, что нужно «оставаться занятым в жестком цикле» и в любом случае накладывать дополнительную нагрузку на процессор. Сон освобождает ЦП для других дел. — Bacco 08 дек. ’16 в 18:53
Включите следующую функцию в начале вашего кода, когда вы хотите подождать. Это отличается от сна, потому что процесс будет использовать 100% ЦП во время работы этой функции.
void sleep (unsigned int mseconds) {clock_t goal = mseconds + clock ( ); while (goal> clock ());}
Обратите внимание, что имя sleep
для этой функции вводит в заблуждение, так как CPU не будет спать вообще.
Что такое функция sleep () и как ее использовать в программе на C?
Язык программирования C предоставляет функцию sleep ()
для ожидания текущего потока в течение заданного времени. Функция slepp ()
засыпает заданное потоком время для текущего исполняемого файла. Конечно, ЦП и другие процессы будут работать без проблем.
sleep ()
предоставляется unistd.h
библиотека, которая является сокращением стандартной библиотеки Unix. Мы можем включить эту библиотеку, как показано ниже.
#include
Если мы пишем приложение, которое будет работать на платформе Windows, мы должны включить windows.h
, как показано ниже.
#include
На самом деле библиотеки по умолчанию для кросс-платформенных форматов нет. Но мы можем написать наше приложение, которое будет использовать правильную библиотеку в соответствии с архитектурой компиляции. В этом случае мы будем использовать константу _WIN32
, которая соответственно поместит соответствующую библиотеку.
#ifdef _WIN32 # include # else # include #endif
В этой части мы будем использовать функцию sleep ()
в качестве примера. В этом примере мы хотим поспать 1 секунду. Как мы видим, параметром будет 1
, который является целым числом.
#include main () {printf ("Спящий в течение 1 секунды . n "); сон (1); return 0;}
Мы также можем спать в течение 10
секунд без проблем. Мы просто предоставим 10
функции sleep
, как показано ниже.
#include main () {printf ("Спящий 1 секунду. n"); сон (10); возврат 0; }
Как было сказано ранее, функция сна будет интерпретировать данное значение как второе. Что, если нам нужно спать в миллисекундах, которые меньше секунды. Мы можем использовать десятичные или плавающие значения. В этом примере мы будем спать в течение 10
миллисекунд, что может быть выражено как 0,01
или 0.010
#include main () {printf ("Спать 10 миллисекунд для выхода. n"); сон (0,10); return 0;}
Мы также можем использовать функцию usleep ()
, которая будет засыпать заданное значение за микросекунду. В этом случае мы будем спать в течение 10
микросекунд с функцией usleep ()
.
#include main () {printf ("Сон на 10 миллисекунд для выхода. n "); usleep (10); return 0;}
Функция sleep ()
вернет void, что означает, что она ничего не вернет.
Спасибо, хорошая статья, которая помогла мне понять концепцию функции sleep ().
Ответ
usleep фактически спит в течение заданного количества * микросекунд *, а не миллисекунд, как указано в статье.
Ответ
`usleep ()` спит * микросекунды *, НЕ миллисекунды!
http://man7.org/linux/man-pages/man3/usleep.3.html
Ответить
В примере, который спит 10 секунд, он все еще говорит: «Сплю 1…»
Ответ
В начале статьи упоминается «slepp ()», а не «sleep ()»…
Ответ
Я думаю, что в Windows должен быть Sleep ().
(верхний регистр S)
Ответ
Вызов функции:
сон (0,10);
будет спать в течение 0,100 секунды. Это 100 миллисекунд. не 10 миллисекунд.
Ответить