intr コマンド

昔懐かしの、SunOS 4.x に存在する(rim にはまだありますね(^^;;;) intr コマンドを、更に懐かしい OMRON Luna (UniOS-B)用に作った物をディレクトリを整理していたら、発見してしまった。(^^;;;;

FreeBSD 2.2.x では、Warnning が出ましたが、動作しました。

Linux でも、動作可能でしょう。(無保証)

ソースプログラム。(完全にオリジナルです。)
ちと、ダサいけど(全て TAB なんか使ってるし)、、、

intr コマンドって?

コマンドを実行していて、ある時間経過しても終了しないような場合、 Signal(Alarm)を送り、プロセスを終了させようとする wrapper プログラムです。

時間制限付き実行みたいな感じですかね。
例えば、CPU 時間を無駄使いしないように、1 分経っても終了しない場合は、終了させるとか、応答時間としてに 10 秒で結果を表示できるぶんにするとか、、、

ただし、Signal(Alarm)で定期的にループするようなプログラムでは、 ちゃんと動きません、なぜなら外部からか、内部で発生させている Signal なのか区別がつかないからです。

例えば、vmstat, iostat, netstat, ... のようなプログラムがそうです。

とはいっても、発生させる Signal(Alarm) を変更すればいいだけなんですけど、、、 なんか問題があってうまくいかなったような気がする。すっかり忘れました。(^^;;;

usage

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.