您无需在 Ruby 中执行任何操作即可发送 SIGTSTP 和 SIGCONT 信号。
要停止正在运行的进程,只需点击Control+ Z:
$ ruby -e "loop { puts Time.now; sleep 1}"
2013-09-11 12:37:47 +0200
2013-09-11 12:37:48 +0200
2013-09-11 12:37:49 +0200
2013-09-11 12:37:50 +0200
2013-09-11 12:37:51 +0200
^Z
[1] + 13764 suspended (signal) ruby -e "loop { puts Time.now; sleep 1}"
$
要继续使用fg
命令:
$ fg
[1] + 13764 continued ruby -e "loop { puts Time.now; sleep 1}"
2013-09-11 12:38:28 +0200
2013-09-11 12:38:29 +0200
2013-09-11 12:38:30 +0200
2013-09-11 12:38:31 +0200
有关详细信息,请参阅http://en.wikipedia.org/wiki/Job_control_(Unix)。
更新
要在 Ruby 中处理此信号:
trap("TSTP") {
# clean up
Process.kill("STOP", Process.pid) # really stop this process
}
trap("CONT") {
# handle restart
}