0

次のコマンドを使用して、Ruby から計算負荷の高いプログラムを実行しようとしています。

%x(heavy_program)

ただし、プログラムの実行時間を制限したい場合があります。だから私はやってみました

%x(ulimit -St #{max_time} & heavy_program)

しかし、それは失敗しているようです。Rubyの外で実行中のshシェルで試しても、「&」トリックは機能しません。

これを行うより良い方法があると確信しています...

4

1 に答える 1

3

&&またはのいずれかを使用します;

%x(ulimit -St #{max_time} && heavy_program)

%x(ulimit -St #{max_time}; heavy_program)

ただし、使用ulimitは本当に必要なものではない場合があります。次のコードを検討してください。

require 'timeout'
Timeout(max_time){ %x'heavy_program' }

ulimitCPU 時間を制限timeoutし、合計実行時間を制限します。これは、私たち人間が通常カウントするためです。

たとえば、sleep 999999シェル コマンドを- で実行すると、5 秒間ではulimit -St 5なく 999999 秒間実行されますsleep

于 2013-01-17T09:31:24.383 に答える