昔懐かしの、SunOS 4.x に存在する(rim にはまだありますね(^^;;;) intr コマンドを、更に懐かしい OMRON Luna (UniOS-B)用に作った物をディレクトリを整理していたら、発見してしまった。(^^;;;;
FreeBSD 2.2.x では、Warnning が出ましたが、動作しました。
Linux でも、動作可能でしょう。(無保証)
ソースプログラム。(完全にオリジナルです。)
ちと、ダサいけど(全て TAB なんか使ってるし)、、、
コマンドを実行していて、ある時間経過しても終了しないような場合、 Signal(Alarm)を送り、プロセスを終了させようとする wrapper プログラムです。
時間制限付き実行みたいな感じですかね。
例えば、CPU 時間を無駄使いしないように、1 分経っても終了しない場合は、終了させるとか、応答時間としてに 10 秒で結果を表示できるぶんにするとか、、、
ただし、Signal(Alarm)で定期的にループするようなプログラムでは、 ちゃんと動きません、なぜなら外部からか、内部で発生させている Signal なのか区別がつかないからです。
例えば、vmstat, iostat, netstat, ... のようなプログラムがそうです。
とはいっても、発生させる Signal(Alarm) を変更すればいいだけなんですけど、、、 なんか問題があってうまくいかなったような気がする。すっかり忘れました。(^^;;;
SunOS 4.x のパクリですけど、、、(ソースは、オリジナル)
intr like command
NAME
intr - allow a command to be interruptible
SYNOPSIS
intr [ -anvs ] [ -t seconds ] command [ arguments ]
OPTIONS
-v Echo the command in the form ' command' (note
leading SPACE).
-a Echo the command and its arguments.
-n Do not echo a NEWLINE after the command or argu-
ments (for example `echo -n ...').
-t secs Arrange to have a SIGALRM signal delivered to the
command in secs seconds.
-s Silently in SIGALRM message.