Функция сна в Windows, используя C

Мне нужно, чтобы моя программа была в спящем режиме в Windows. В каком файле заголовка есть функция сна?


Используйте:

  #include  Sleep (sometime_in_millisecs); //Обратите внимание на верхний регистр S  

А вот небольшой пример, который компилируется с MinGW и делает то, что написано на банке:

   #include  #include  int main () {printf ("начало засыпания ...  n");  Сон (3000); //Спящий три секунды printf ("сон закончился  n");}  

8

SleepEx (см. http://msdn.microsoft.com/en-us/library/ms686307.aspx) — лучший выбор если ваша программа прямо или косвенно создает окна (например, используйте некоторые COM-объекты). В простых случаях вы также можете использовать Sleep .

Улучшите этот ответ
ответил 31 июля ’10 в 17:43
добавить комментарий |

SleepEx функция (см. http://msdn.microsoft.com/en-us/library /ms686307.aspx) — лучший выбор, если ваша программа прямо или косвенно создает окна (например, использует некоторые COM-объекты). В простых случаях вы также можете использовать Sleep .


0

MSDN: Заголовок: Winbase.h (включая Windows.h)

Улучшите этот ответ
ответил 31 июля ’10 в 17:38
  • 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
| показать 4 дополнительных комментария

MSDN: Header: Winbase.h (включая Windows.h)


-1

Включите следующую функцию в начале ваш код, когда вы хотите быть занятым, подождите. Это отличается от сна, потому что процесс будет использовать 100% ЦП во время работы этой функции.

  void sleep (unsigned int mseconds) {clock_t goal = mseconds + clock (  );  while (goal> clock ());}  

Обратите внимание, что имя sleep для этой функции вводит в заблуждение, так как CPU не будет спать вообще.

Улучшите этот ответ
отредактировано 16 сен. ’18 в 17:30
Cody Piersall
6,89622 золотых знака3636 серебряных знаков5252 бронзовых знака
ответил 31 янв. в 17:02
  • 15
    1. Это не отвечает на вопросы автора. 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, что означает, что она ничего не вернет.

УЗНАТЬ БОЛЬШЕ Сценарий Python Периодически меняет Mac-адрес

Спасибо, хорошая статья, которая помогла мне понять концепцию функции 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 миллисекунд.

Ответить

Оцените статью
logicle.ru
Добавить комментарий