差異

2012-07-21 100 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應該執行腳本,而不理解和實現邏輯。行爲是很有道理的。