呼唤 sleep(10)意味着睡眠指定的秒数。当我键入“ sleep 10”时,我想等待10秒,但是当我SIGTSTP在sleep命令之后立即使用CTRL-Z(或发送)时,即使该过程也不会停止“ timer”(或计数器)已经停止。
我可以看到jobs状态sleep更改为,STOPPED但是如果我等待10秒钟,然后将此过程发送到前台,它将,即使它运行的时间少于10秒钟,立即完成。
因此,我的问题是如何停止睡眠计时器的运行?
更新 ::我现在了解睡眠使用的是时钟时间,因此如何使用用户cpu时间实现睡眠
我在git(第25行)看_math.c:
#if !defined(HAVE_ACOSH) || !defined(HAVE_ASINH)
static const double ln2 = 6.93147180559945286227E-01;
static const double two_pow_p28 = 268435456.0; /* 2**28 */
Run Code Online (Sandbox Code Playgroud)
我注意到ln2值与ln2的wolframalpha值不同.(光头部分是差异)
ln2 = 0.693147180559945 286227(cpython)
ln2 = 0.693147180559945 3094172321214581(wolframalpha)
ln2 = 0.693147180559945 309417232121458(维基百科)
所以我的问题是为什么会有区别?我错过了什么?
我正在学习Erlang,我看到了一个" 安全使用 "
的例子,这是首选"安全使用"的例子
better(N) ->
X = case N of
1 -> 1;
_ -> 0
end,
X.
Run Code Online (Sandbox Code Playgroud)
也是一个安全但不好的例子
bad(N) ->
case N of
1 -> X =1;
_ -> X = 0
end,
X.
Run Code Online (Sandbox Code Playgroud)
我理解这两个的功能(看起来和我一样),但我无法理解是什么让第一个功能变得更好,第二个功能更糟糕?
我在O'Reilly的"软件开发的并行方法"一书中读到了,
在第93页中有一些"消息传递"的例子.
1> Pid = self().
<0.30.0>
2> Pid ! hello.
hello
3> <0.30.0> ! hello.
* 1: syntax error before: '<'
Run Code Online (Sandbox Code Playgroud)
问题是我不明白为什么会出现语法错误,因为当我输入时1> Pid.
我会得到结果<0.30.0>,那么第2行和第3行之间的区别是什么(期望它是变量的事实)?
我试图让提示重置,忘记所有变量并从第1行开始提示>
我知道以下内置函数
f(). %% forget all
io:format("\e[H\e[J"). %% "clear screen" and moving cursor to the begin of the line
Run Code Online (Sandbox Code Playgroud)
但是当我编写以下命令时,它确实忘记了所有变量,但它不会"重置"屏幕,只是清除屏幕,就像clear终端中的命令一样.
在Linux中,我只是键入reset,但我找不到等效的命令或内置函数为erlang做到这一点.
我也试过,io:format(os:cmd("reset")). 但收到了错误.
我现在的解决方案是退出erlang终端,然后重新打开它,但我确信有更简单的方法可以做到这一点.
erlang ×4
bash ×1
c ×1
cpython ×1
erlang-otp ×1
gen-server ×1
linux ×1
pid ×1
python ×1
reset ×1
sendmessage ×1
sleep ×1
terminal ×1
time ×1