2016-05-31 5 views
2

Macに固有の - 簡単な再現性の例:R Sys.sleep()macの割り込み/割り込み可能な遅延の方法は?

Sys.sleep(60) 
print("output") 

Sys.sleepのヘルプページには、()は、割り込みをチェックする必要がありますが、それらのいずれかの形式を尊重していないようだ、CTRL-ないことを言いますc、停止ボタンではなくEsc。ターミナルからスクリプトを実行しているctrl-c割り込みを使うことはできますが、それはスクリプト全体を強制終了します。

私はまだ中断することができる遅延間隔を設定したいと思います。その時点でスクリプトは続行されます(したがって、60秒が経過していなくても "出力"はまだ出力されます)。これを行うには(あまりにもリソースが重すぎないように)方法がありますか?

もっと一般的には、後で何が起こるかにかかわらず、端末にいないときにMacでSys.sleepコールを中断する方法はありますか?まだこの問題に対処していないようです

関連リソース:

How do I interrupt R?

https://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html#How-can-I-interrupt-lengthy-operations-or-output_003f < - どうやら、端末からの割り込みを注入することができますか?しかし、これはclunkyであり、確かに主な目標には達しません。これは、(Rコンソールにフォーカスがまま)システムのスリープを終了するには、Mac上でEscキーを使用することができます

system("sleep 60") 
print("output") 

+0

エスケープキーを押してください。これはちょうど私のために働いた(しかし、私は現在Windowsマシン上にいる)。ヘルプファイルによれば、 'Sys.sleep'はGUIイベントに応答するのに十分な頻度で、通常0.5秒ごとにプロセスを起動させます。キーを一度すばやく押すだけでは機能しない場合があります。 – lmo

+0

Escを押してもMacでうまく動作しますが、 'Sys.sleep'を呼び出して中断することで、あなたが達成しようとしていることを本当にはっきりとは分かりません。これ以上のことをするつもりですか?http://stackoverflow.com/q/15272916/324364 – joran

+0

R 3.2.1でMac OS 10.6.8でEscが機能しませんでした。ありがとうございます。 – nya

答えて

0

ここで私が見つけた一つの可能​​性は、システムのスリープではなく、Rのバージョンを使用して、ですしたがって、実行可能なソリューションを提供します。

エレガントではありませんが、完全にサービス可能です。

(自分のポストにフラグを付ける、誰かがよりよい解決策と一緒に来る場合、彼らは小切手を持つことができます。)