2017-02-08 7 views
0

次のような状況があります。私のRスクリプトでは、system2のサードパーティ製プログラムを起動します。プログラムは何度も呼ばれ、残念なことに非常に安定しておらず、クラッシュすることがあります。この場合、タスクマネージャを使って手動でプログラムを終了するまで、制御はRに戻されません。外部プログラムを起動し、クラッシュしていないか確認してください。

私がしたいこと:プログラムが10分後にコントロールを返さなかった場合は、自動的にそれを強制終了します。

もちろん、C++、Javaなどでプログラムをラップして、この機能をラッパーで実装し、Rからラッパーを呼び出すこともできます。おそらくRcppも使用できます。

しかし、Rで直接これを実現する方法があるのだろうか?

はところで:私は、Windows 7上の任意のヒントについて

感謝しています!

答えて

1

UNIX系のシステムを使用している場合は、Unixコマンドtimeoutをシステムコールに追加できます。例:

# system command that times out 
> exitcode = system('timeout 1 sleep 20') 
> exitcode 
[1] 124 

# system command that does not time out 
> exitcode = system('timeout 2 sleep 1') 
> exitcode 
[1] 0 

systemあなたはそれが0(OK)または124(タイムアウトした)であるかどうかをチェックできるように、プロセスの終了ステータスを返します。

+0

ありがとう、それは良いアイデアです! Windows上で楽しいです。その情報を私の質問にも追加します。 – AEF

+0

windows上のtimeoutコマンドについての質問:https://stackoverflow.com/questions/13515254/how-to-set-a-timeout-for-a-process-under-windows-7とMicrosoftのマニュアルページ:https ://technet.microsoft.com/en-us/library/cc754891(v = ws.11).aspx – user1981275

関連する問題