Bash:如何使短延迟



如何在bash中实现短延迟(小于一秒)?在sleep命令中最小的时间单位是1秒。我使用的是bash 3.0在SunOS 5.10。

我不知道这是在哪个版本中实现的,但是我的sleep版本(v6.12)接受小数。sleep 0.5作品。

如果你的程序太旧了,那么一个简短的python或C程序可能是你唯一的解决方案。

SunOS (Solaris)可能默认情况下没有安装GNU工具。你可以考虑安装它们。也有可能它们已经安装在您的系统中,也许在您的默认$PATH中没有的某个目录中。GNU sleep是coretils包的一部分。

如果你有Perl,那么这个:

perl -MTime::HiRes -e 'Time::HiRes::usleep 500000'

应该休眠500000微秒(0.5秒)——但是调用perl的开销很大。

为了最小化开销,我会编写一个调用usleep()nanosleep()的小C程序。注意,usleep()可能不能处理大于1秒的间隔。

将此写入" ussleep .c"

#include <unistd.h>
#include <stdlib.h>
int main(int argc, char **argv) {
    usleep( atol( argv[1] ) );
}

make usleep
./usleep 1000000

你试过看手册页吗?它应该有一种方法来实现小于一秒的延迟,我现在不是Linux机器,所以不能为你查找它。

您可以使用ussleep。下面是手册页的链接:http://linuxmanpages.com/man1/usleep.1.php

一个非常非常简单的pythonesque ussleep十进制秒分数。它不是很精确,并且没有对命令行参数

进行错误检查。
#!/usr/bin/python
import sys
import time
if len(sys.argv) == 1:
    sleepTime = 1.0
else:
    sleepTime = str(sys.argv[1])
time.sleep(float(sleepTime))

相关内容

  • 没有找到相关文章

最新更新