C程序中bash睡眠和睡眠之间的区别

时间:2012-07-21 21:03:09

标签: c bash

来自:http://www.utdallas.edu/~kcooper/teaching/5375/fall08/Tutorial8/tutorial8.htm

(“C程序中bash睡眠和睡眠之间的区别”一节):

  

bash sleep命令和C程序的睡眠功能之间的区别主要区别。 C程序的休眠功能是一个简单的函数调用。调用时,它会将CPU放弃到操作系统,以便它可以安排其他需要CPU的进程。然后在指定的秒数之后,调用sleep的进程再次开始工作。

     

sleep命令bash的工作方式不同。调用此命令时,它会创建自己的子进程。它运行指定的秒数,然后退出到调用进程。

  1. 为什么bash睡得那么复杂? (为什么通过分叉实现bash睡眠?)
  2. 为什么bash睡觉不能像C睡觉?

4 个答案:

答案 0 :(得分:2)

我认为这些信息只会产生误导。如果sleep是shell调用的外部程序(/bin/sleep),则所有额外的工作都是调用外部程序;睡眠程序本身只调用睡眠功能。 shell没有理由不为sleep命令提供内置函数,只需调用sleep函数而不需要新进程;然而,好处最多也是可疑的。由于标准sleep命令将始终至少休眠一秒,并且启动外部程序的开销大约为微秒,我认为它没有任何方式可以帮助提高性能。

答案 1 :(得分:2)

  

为什么bash睡得那么复杂? (为什么通过分叉实现bash睡眠?

因为这就是bash的作用,它运行程序(在unix上通过fork()/ exec()完成)只是有人写了一个程序,/bin/sleep只是睡了指定量的秒。

  

为什么bash睡眠不能像C睡眠一样?

如果有人将睡眠作为内置命令/功能进行打击,但是还没有人可以使用,而且可能的好处是不值得的。

答案 2 :(得分:1)

因为在执行外部命令时,您可以用自己的睡眠替换“睡眠”(默认为/bin/sleep),例如在$HOME/bin/sleep中 - 通过简单的PATH更改......

外部命令=自由。

正如@nos已经告诉过的那样:bash正在为所设计的目标做准备 - >执行程序。

答案 3 :(得分:0)

好吧bash只是为了执行其他程序或脚本。想一想在后台模式下调用睡眠。 Bash应该执行脚本而不理解并实现其中的逻辑。行为是合理的。