首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C程序中bash睡眠与睡眠的区别

C程序中bash睡眠与睡眠的区别
EN

Stack Overflow用户
提问于 2012-07-21 21:03:08
回答 4查看 1.2K关注 0票数 1

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

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

bash睡眠命令和C程序的睡眠功能之间有很大的区别。C程序的睡眠函数是一个简单的函数调用。调用时,它将CPU分配给操作系统,以便调度其他需要CPU的进程。然后,在指定的秒数之后,称为睡眠的进程再次开始工作。 睡眠命令bash的工作方式不同。当调用此命令时,它会创建自己的子进程。它运行指定的秒数,然后退出到调用进程。

  1. 为什么巴什睡得这么复杂?(为什么巴什睡眠是通过分叉实现的?)
  2. 为什么巴什睡眠不能像C睡眠那样?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-21 21:13:11

为什么巴什睡得这么复杂?(为什么巴什睡眠是通过叉子实现的?

因为bash就是这样做的,所以它运行程序(在unixes上通过/exec()执行)--它只是碰巧有人编写了一个程序,/bin/sleep,它只是睡眠了指定的秒数。

为什么巴什睡眠不能像C睡眠那样?

如果有人将睡眠作为一个内置的命令/函数来实现,但还没有人这样做的话,它是可以的,而且它的好处可能是不值得的。

票数 2
EN

Stack Overflow用户

发布于 2012-07-21 21:09:35

我认为这些信息只是误导。如果sleep是由shell调用的外部程序(/bin/sleep),那么所有额外的工作都是调用外部程序;睡眠程序本身只调用睡眠函数。没有理由一个shell不能为只调用sleep函数而不分一个新进程的sleep命令提供内置的内容;但是,其好处最多也是值得怀疑的。由于标准的sleep命令总是至少休眠1秒,并且启动外部程序的开销是微秒左右,所以我认为它对性能没有任何帮助。

票数 2
EN

Stack Overflow用户

发布于 2012-07-21 21:55:24

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

外部命令=自由。

正如@nos已经告诉我们的那样: bash正在执行设计好的->执行程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11595812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档