sleep 函数怎么用?

时间:2022-12-10 22:28:39
#include <stdio.h>

int main ()
{
while(1)
{
sleep(1);
printf("A");
}

return 0;
}
操作系统:Red Hat Linux 9.0

编译运行后程序没反应呀.就停哪儿了.为什么?谢谢.
还有:
Shell里有sleep 1s这个命令.请问C语言能调用吗?

55 个解决方案

#1


sleep(毫秒数目!);这里是按照毫秒计算的!
1MS根本感觉不到,sleep的参数是停的毫秒!

#2


sleep(5000);就有感觉了5s了

#3


man sleep

#4


一楼的说得没错,sleep()是以毫秒记的,把数写大点,要在千以上才感觉得出~~

#5


对啊,sleep()中的参数是以毫秒为单位的,要就用sleep(1000);才是sleep了1秒

#6


Sample Source:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
const char week[][8]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
int main()
{
time_t t;
struct tm *p;
while (1)
{
t = time(NULL);
p = localtime(&t);
printf("%d年%d月%d日 ",p->tm_year+1900,p->tm_mon+1,p->tm_mday);
printf("%.2d:%.2d:%.2d %s\r",p->tm_hour,p->tm_min,p->tm_sec,week[p->tm_wday]);
sleep(1000);
}
return 0;
}

#7


楼主记得,以后遇到这样的问题
先man一下 ..

这种问题实在没有讨论的必要

#8


分数不少
看看帮助说的也没错
sleep(1000)计时1秒

#9


这样的帖子都给50分,大家快来抢分啊

#10


zez(思恩 闭关练功ing...) 
说的对!

linux下面man就是最好的老师,很多问题没必要直接问人,man先。

#11


真郁闷,来晚了~~既然前面都说完了,那我就只能留个脚印了~~

#12


呵呵~~

对  就是停的时间太少了~
  sleep()也不一定是毫秒~
 要看编译器的!   这个函数并不是c99   所以不同编译器也不一样~~~

比如tc里面   就是秒~
    gcc    就是毫秒~

#13


同意楼上的

#14


我发现C区里的人太傲了,以为是小问题就不仔细。其实上面没有一个正确答案。sleep(秒)里面就是秒,不是毫秒。
在sleep后面加上:fflush(stdout);
这一句就行了。windows下也是秒。你们试都不试就忹下结论。
不过分还是少不了的。
喵喵~~~~~~~~~~~~~~~~~~~~~

#15


肯定是“秒”

#16


to 楼上and 楼上的楼上
Sleep 
This function suspends the execution of the current thread for a specified interval. 

void Sleep(
DWORD dwMilliseconds); 
Parameters
dwMilliseconds 
Specifies the time, in milliseconds, for which to suspend execution. A value of zero causes the thread to relinquish the remainder of its time slice to any other thread of equal priority that is ready to run. If there are no other threads of equal priority ready to run, the function returns immediately, and the thread continues execution. A value of INFINITE causes an infinite delay. 

你们知不知道 milliseconds 是什么意思? 不知道查一下字典ok?

linux是 秒. 但不一定所有的系统都一样..

不要误人子弟啊....

#17


所以说,有问题先查系统文档...

呵呵.论坛上可能很多人还不如你..给你一些错误答案. 而你有分辨不出谁对谁错...
不如不问 ...

#18


有Sleep()和sleep()之分的

#19


有Sleep()和sleep()之分?

#20


zez(思恩 闭关练功ing...) 
****************************************************
说的是Sleep,不是sleep吧!

#21


windows下sleep()里面肯定也是秒。但Sleep()就不知道了。

#22


windows下有 sleep 么?
msdn里都没有.不知道你在哪找到的..... 
不要说dos下有,我现在用windwos.... 不知道dos下有没有..

#23


/*  HELLO.C -- Hello, world */

#include "stdio.h"

main()
{
    while(1)
    {
        sleep(2);
        abc();

    }
}
abc()
{
    printf("ABC\n");
}

#24


楼主的代码好像死循环了。死循环不要紧,但是一次输出一个字符,不带换行符,可能会缓存起来而不刷新的。这可能是你程序没反应的原因。你先把"A"改成"A\n",然后看看"A"输出的间隔时间,决定是否把1改成1000。

#25


函数名: sleep  
功  能: 执行挂起一段时间  
用  法: unsigned sleep(unsigned seconds);  
程序例:  

#include <dos.h>  
#include <stdio.h>  

int main(void)  
{  
   int i;  

   for (i=1; i<5; i++)  
   {  
      printf("Sleeping for %d seconds\n", i);  
      sleep(i);  
   }  
   return 0;  
}  

转自:<c语言库函数范例教称>

#26


还有windows下Sleep(windows.h)参数的单位是毫秒,用不找查。

#27


lz,  i have compiled your code in TC2.0, and it can work

#28


study 。

#29


哥们,我给你试了一下,
main()
{
   int i;
   for(i=0;i<3;i++)
   {
    printf("%s    ","love");
    sleep(3);
        
   } 
}

运行环境是wintc,显示的是秒,没有大写sleep这个说法,提示有语法错误

#30


在 TC 2.0 下的 DOS.H 里有 sleep() 和 delay() 的原型,
           1:  sleep:      suspends execution for interval
               prototype:  void sleep( unsigned seconds );        /*延迟多少秒*/

           2:  delay:      suspends execution for interval 
               prototype:  void delay( unsigned milliseconds);  /*延迟多少毫秒*/

#31


各位~    sleep() 是一个库函数吧??

C标准里面并没有定义这个东西~

所以  他是秒还是豪秒  要看编译器~
  甚至如果我愿意!  我完全可以让他是小时!

和系统有什么关系????

#32


楼上说的好像不错
C标准里面真的没有这个函数
我觉得这个sleep多少要看哪个编译器的问题吧?而没必要讨论的那么死
纯属瞎猜 误人别怪

#33


与编译器有关 CC

 sleep() - suspend execution for interval

 SYNOPSIS
      #include <unistd.h>

      unsigned int sleep(unsigned int seconds);

 DESCRIPTION
      sleep() suspends the current process from execution for the number of
      seconds specified by the argument.

#34


man

#35


关于Sleep在msdn中的解释:

Sleep
The Sleep function suspends the execution of the current thread for a specified interval. 

VOID Sleep(
  DWORD dwMilliseconds   // sleep time in milliseconds
);
 
Parameters
dwMilliseconds 
Specifies the time, in milliseconds, for which to suspend execution. A value of zero causes the thread to relinquish the remainder of its time slice to any other thread of equal priority that is ready to run. If there are no other threads of equal priority ready to run, the function returns immediately, and the thread continues execution. A value of INFINITE causes an infinite delay. 
Return Values
This function does not return a value. 

Remarks
A thread can relinquish the remainder of its time slice by calling this function with a sleep time of zero milliseconds. 

You have to be careful when using Sleep and code that directly or indirectly creates windows. If a thread creates any windows, it must process messages. Message broadcasts are sent to all windows in the system. If you have a thread that uses Sleep with infinite delay, the system will deadlock. Two examples of code that indirectly creates windows are DDE and COM CoInitialize. Therefore, if you have a thread that creates windows, use MsgWaitForMultipleObjects or MsgWaitForMultipleObjectsEx, rather than Sleep.

QuickInfo
  Windows NT: Requires version 3.1 or later.
  Windows: Requires Windows 95 or later.
  Windows CE: Requires version 1.0 or later.
  Header: Declared in winbase.h.
  Import Library: Use kernel32.lib.

See Also
Processes and Threads Overview, Process and Thread Functions, MsgWaitForMultipleObjects, MsgWaitForMultipleObjectsEx, SleepEx 

#36


linux 下在terminal输入  man sleep 
 



  在键盘上按 q 退出 man!

#37


接分,毫秒

#38


usleep()
------------------------------------------------------------
NAME:sleep - Sleep for the specified number of seconds

SYNOPSIS
       #include <unistd.h>

       unsigned int sleep(unsigned int seconds);

DESCRIPTION
       sleep()  makes  the  current  process  sleep until seconds seconds have
       elapsed or a signal arrives which is not ignored.
-----------------------------------------------------------------------------
NAME:usleep - suspend execution for microsecond intervals

SYNOPSIS
       #include <unistd.h>

       void usleep(unsigned long usec);
       int usleep(unsigned long usec); /* SUSv2 */

#39


sleep()函数不是ANSI兼容的,有的编译器包含这个函数,使用时记得包含头文件。
还有类似的函数delay();

#40


TO *************************zez(思恩 闭关练功ing...) 
****************************************************
milliseconds是啥意思啊?Milliseconds:返回用毫秒计算的TimeSpan值,用google搜milliseconds的第一个结果,所以我想绝对是毫秒。毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒

#41


我说得没错,大家再看看lz的帖子,人家已经说明了是Linux系统阿。  
所以我才说的是 “秒”。 man 一下就知道了

#42


汗,这点小问题居然惊动这么多人,居然还有这么多人不仔细看就得出结论
LZ都说了是readhat9.0了,关晕到死什么事情啊
man 3 sleep
看看说明吧

#43


搞了半天,大家都扯远了。
3个库,3个sleep。谈个毛~

#44


没有分了,来晚了,哎

#45


大家讨论的挺激烈的嘛,其实都说得很明白了啊,与编译环境有关!

#46


哈,学了不少知识。

#47


哈哈....

#48


sleep有时是毫秒,有时是秒,只有自已试了才知道。

#49


JF

#50


哈哈哈  --看完贴后第一反应

先不说其他理论的东东,就本人亲身经历的就有在Solaris系统下sleep就有毫秒和秒的两种情况,是在两个不同的Solaris服务器。

其实许多兄弟说的都没错,就是局限了。
cuibo1123(月满C楼)  说的很清楚啊  study

#1


sleep(毫秒数目!);这里是按照毫秒计算的!
1MS根本感觉不到,sleep的参数是停的毫秒!

#2


sleep(5000);就有感觉了5s了

#3


man sleep

#4


一楼的说得没错,sleep()是以毫秒记的,把数写大点,要在千以上才感觉得出~~

#5


对啊,sleep()中的参数是以毫秒为单位的,要就用sleep(1000);才是sleep了1秒

#6


Sample Source:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
const char week[][8]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
int main()
{
time_t t;
struct tm *p;
while (1)
{
t = time(NULL);
p = localtime(&t);
printf("%d年%d月%d日 ",p->tm_year+1900,p->tm_mon+1,p->tm_mday);
printf("%.2d:%.2d:%.2d %s\r",p->tm_hour,p->tm_min,p->tm_sec,week[p->tm_wday]);
sleep(1000);
}
return 0;
}

#7


楼主记得,以后遇到这样的问题
先man一下 ..

这种问题实在没有讨论的必要

#8


分数不少
看看帮助说的也没错
sleep(1000)计时1秒

#9


这样的帖子都给50分,大家快来抢分啊

#10


zez(思恩 闭关练功ing...) 
说的对!

linux下面man就是最好的老师,很多问题没必要直接问人,man先。

#11


真郁闷,来晚了~~既然前面都说完了,那我就只能留个脚印了~~

#12


呵呵~~

对  就是停的时间太少了~
  sleep()也不一定是毫秒~
 要看编译器的!   这个函数并不是c99   所以不同编译器也不一样~~~

比如tc里面   就是秒~
    gcc    就是毫秒~

#13


同意楼上的

#14


我发现C区里的人太傲了,以为是小问题就不仔细。其实上面没有一个正确答案。sleep(秒)里面就是秒,不是毫秒。
在sleep后面加上:fflush(stdout);
这一句就行了。windows下也是秒。你们试都不试就忹下结论。
不过分还是少不了的。
喵喵~~~~~~~~~~~~~~~~~~~~~

#15


肯定是“秒”

#16


to 楼上and 楼上的楼上
Sleep 
This function suspends the execution of the current thread for a specified interval. 

void Sleep(
DWORD dwMilliseconds); 
Parameters
dwMilliseconds 
Specifies the time, in milliseconds, for which to suspend execution. A value of zero causes the thread to relinquish the remainder of its time slice to any other thread of equal priority that is ready to run. If there are no other threads of equal priority ready to run, the function returns immediately, and the thread continues execution. A value of INFINITE causes an infinite delay. 

你们知不知道 milliseconds 是什么意思? 不知道查一下字典ok?

linux是 秒. 但不一定所有的系统都一样..

不要误人子弟啊....

#17


所以说,有问题先查系统文档...

呵呵.论坛上可能很多人还不如你..给你一些错误答案. 而你有分辨不出谁对谁错...
不如不问 ...

#18


有Sleep()和sleep()之分的

#19


有Sleep()和sleep()之分?

#20


zez(思恩 闭关练功ing...) 
****************************************************
说的是Sleep,不是sleep吧!

#21


windows下sleep()里面肯定也是秒。但Sleep()就不知道了。

#22


windows下有 sleep 么?
msdn里都没有.不知道你在哪找到的..... 
不要说dos下有,我现在用windwos.... 不知道dos下有没有..

#23


/*  HELLO.C -- Hello, world */

#include "stdio.h"

main()
{
    while(1)
    {
        sleep(2);
        abc();

    }
}
abc()
{
    printf("ABC\n");
}

#24


楼主的代码好像死循环了。死循环不要紧,但是一次输出一个字符,不带换行符,可能会缓存起来而不刷新的。这可能是你程序没反应的原因。你先把"A"改成"A\n",然后看看"A"输出的间隔时间,决定是否把1改成1000。

#25


函数名: sleep  
功  能: 执行挂起一段时间  
用  法: unsigned sleep(unsigned seconds);  
程序例:  

#include <dos.h>  
#include <stdio.h>  

int main(void)  
{  
   int i;  

   for (i=1; i<5; i++)  
   {  
      printf("Sleeping for %d seconds\n", i);  
      sleep(i);  
   }  
   return 0;  
}  

转自:<c语言库函数范例教称>

#26


还有windows下Sleep(windows.h)参数的单位是毫秒,用不找查。

#27


lz,  i have compiled your code in TC2.0, and it can work

#28


study 。

#29


哥们,我给你试了一下,
main()
{
   int i;
   for(i=0;i<3;i++)
   {
    printf("%s    ","love");
    sleep(3);
        
   } 
}

运行环境是wintc,显示的是秒,没有大写sleep这个说法,提示有语法错误

#30


在 TC 2.0 下的 DOS.H 里有 sleep() 和 delay() 的原型,
           1:  sleep:      suspends execution for interval
               prototype:  void sleep( unsigned seconds );        /*延迟多少秒*/

           2:  delay:      suspends execution for interval 
               prototype:  void delay( unsigned milliseconds);  /*延迟多少毫秒*/

#31


各位~    sleep() 是一个库函数吧??

C标准里面并没有定义这个东西~

所以  他是秒还是豪秒  要看编译器~
  甚至如果我愿意!  我完全可以让他是小时!

和系统有什么关系????

#32


楼上说的好像不错
C标准里面真的没有这个函数
我觉得这个sleep多少要看哪个编译器的问题吧?而没必要讨论的那么死
纯属瞎猜 误人别怪

#33


与编译器有关 CC

 sleep() - suspend execution for interval

 SYNOPSIS
      #include <unistd.h>

      unsigned int sleep(unsigned int seconds);

 DESCRIPTION
      sleep() suspends the current process from execution for the number of
      seconds specified by the argument.

#34


man

#35


关于Sleep在msdn中的解释:

Sleep
The Sleep function suspends the execution of the current thread for a specified interval. 

VOID Sleep(
  DWORD dwMilliseconds   // sleep time in milliseconds
);
 
Parameters
dwMilliseconds 
Specifies the time, in milliseconds, for which to suspend execution. A value of zero causes the thread to relinquish the remainder of its time slice to any other thread of equal priority that is ready to run. If there are no other threads of equal priority ready to run, the function returns immediately, and the thread continues execution. A value of INFINITE causes an infinite delay. 
Return Values
This function does not return a value. 

Remarks
A thread can relinquish the remainder of its time slice by calling this function with a sleep time of zero milliseconds. 

You have to be careful when using Sleep and code that directly or indirectly creates windows. If a thread creates any windows, it must process messages. Message broadcasts are sent to all windows in the system. If you have a thread that uses Sleep with infinite delay, the system will deadlock. Two examples of code that indirectly creates windows are DDE and COM CoInitialize. Therefore, if you have a thread that creates windows, use MsgWaitForMultipleObjects or MsgWaitForMultipleObjectsEx, rather than Sleep.

QuickInfo
  Windows NT: Requires version 3.1 or later.
  Windows: Requires Windows 95 or later.
  Windows CE: Requires version 1.0 or later.
  Header: Declared in winbase.h.
  Import Library: Use kernel32.lib.

See Also
Processes and Threads Overview, Process and Thread Functions, MsgWaitForMultipleObjects, MsgWaitForMultipleObjectsEx, SleepEx 

#36


linux 下在terminal输入  man sleep 
 



  在键盘上按 q 退出 man!

#37


接分,毫秒

#38


usleep()
------------------------------------------------------------
NAME:sleep - Sleep for the specified number of seconds

SYNOPSIS
       #include <unistd.h>

       unsigned int sleep(unsigned int seconds);

DESCRIPTION
       sleep()  makes  the  current  process  sleep until seconds seconds have
       elapsed or a signal arrives which is not ignored.
-----------------------------------------------------------------------------
NAME:usleep - suspend execution for microsecond intervals

SYNOPSIS
       #include <unistd.h>

       void usleep(unsigned long usec);
       int usleep(unsigned long usec); /* SUSv2 */

#39


sleep()函数不是ANSI兼容的,有的编译器包含这个函数,使用时记得包含头文件。
还有类似的函数delay();

#40


TO *************************zez(思恩 闭关练功ing...) 
****************************************************
milliseconds是啥意思啊?Milliseconds:返回用毫秒计算的TimeSpan值,用google搜milliseconds的第一个结果,所以我想绝对是毫秒。毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒毫秒

#41


我说得没错,大家再看看lz的帖子,人家已经说明了是Linux系统阿。  
所以我才说的是 “秒”。 man 一下就知道了

#42


汗,这点小问题居然惊动这么多人,居然还有这么多人不仔细看就得出结论
LZ都说了是readhat9.0了,关晕到死什么事情啊
man 3 sleep
看看说明吧

#43


搞了半天,大家都扯远了。
3个库,3个sleep。谈个毛~

#44


没有分了,来晚了,哎

#45


大家讨论的挺激烈的嘛,其实都说得很明白了啊,与编译环境有关!

#46


哈,学了不少知识。

#47


哈哈....

#48


sleep有时是毫秒,有时是秒,只有自已试了才知道。

#49


JF

#50


哈哈哈  --看完贴后第一反应

先不说其他理论的东东,就本人亲身经历的就有在Solaris系统下sleep就有毫秒和秒的两种情况,是在两个不同的Solaris服务器。

其实许多兄弟说的都没错,就是局限了。
cuibo1123(月满C楼)  说的很清楚啊  study