差异

2012-07-21 95 views
0

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

(节“庆典睡就睡在C程序之间的差异”):

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

睡眠命令bash的工作方式不同。当这个命令被调用时,它会创建一个自己的子进程。它运行指定的秒数,然后退出到调用进程。

  1. 为什么bash的睡眠这么复杂? (为什么bash睡眠是通过分叉实现的?)
  2. 为什么bash睡眠不能像C睡眠?
+0

也许把它与'bash'的作者并没有和我们一起?在你正在使用的Bash版本中,根本没有“睡眠”类型的内建... – 2012-07-21 21:09:35

+3

只是为了重申它,所以它非常清楚,没有“bash睡眠”。有一个外部工具'/ bin/sleep'。 – 2012-07-22 00:37:35

+1

您链接的页面至少有一些错误。 – 2012-07-22 00:53:12

回答

1

为什么bash睡得这么复杂? (为什么bash的睡眠是通过分岔实现?

,因为这是bash所做的,它运行程序(在Unix一样,也是通过fork()/执行exec()),它使恰好有人写了一个程序来完成,/bin/sleep

刚刚睡在指定的秒数。为什么bash的睡眠不能像C睡觉?

可能,如果有人实施睡眠作为一个内置的命令/功能bash,但没有人有,并且可能的好处不是麦汁h it。

2

我认为这些信息只是误导。如果sleep是由shell调用的外部程序(/bin/sleep),那么所有额外的工作就是调用外部程序;睡眠程序本身只是调用睡眠功能。没有理由shell无法为sleep命令提供内置命令,该命令仅调用sleep函数而不分配新进程;然而,好处充其量是可疑的。由于标准sleep命令总是会睡眠至少一秒,并且启动外部程序的开销大约为几微秒,所以我没有看到任何有助于性能的方式。

+1

A [完全随机链接](http://dis.4chan.org/read/prog/1295544154)只与切线相关。 – 2012-07-21 21:10:35

+1

'ksh93'和'mksh'有一个'睡眠'内建,大部分'睡眠'实现允许睡眠小数秒。 – jilles 2012-07-21 21:26:26

+1

+1表示“睡眠”命令的启动时间和运行时间之间的数量级差异。 – chepner 2012-07-22 13:45:38

1

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

外部命令=自由。

由于@nos已经告诉:bash正在为设计的东西做 - >执行程序。

0

bash只是为了执行其他程序或脚本。考虑在后台模式下调用睡眠。 Bash应该执行脚本,而不理解和实现逻辑。行为是很有道理的。