[JM:00096] Re: [POST:DP] GNU_findutils xargs.1

Back to archive index

長南洋一 cyoic****@maple*****
2011年 1月 6日 (木) 21:57:26 JST


長南です。

お答え、ありがとうございます。

西山さんのメールより [JM:00095]
>
> > それから、「返り値」セクションのすぐ下の部分ですが、a program が
> > よくわかりません。
> > 
> >   .\"O Exit codes greater than 128 are used by the shell to indicate that 
> >   .\"O a program died due to a fatal signal.
> >   .P
> >   128 以上の返り値は、致命的なシグナルのせいでプログラムが
> >   止まったことを示すために、シェルによって使用される。
> > 
> > これだけだと、program は xargs のことではないかと考えられます。
> > しかし、xargs なら、a ではなく、the なのではないか。
> 
> プログラム一般の話ではないでしょうか?
> 以下のようにシグナルで終了したときに 128 以上の exit status を
> 使っているようです。
> 
> % ruby -e 'Process.kill(:QUIT,$$)'
> zsh: quit       ruby -e 'Process.kill(:QUIT,$$)'
> % echo $?
> 131
> % ruby -e 'Process.kill(:INT,$$)'
> -e:1: Interrupt
> 
> % echo $?
> 130
> %

なるほど、プログラム一般だから、a program なんですね。
128 以上は、シグナルによってプログラムが終了したときに、シェルが
使っている。だから、xargs は、呼び出したコマンドがシグナルによって
kill されたときに、125 を使う、ということなんでしょう (そこまでは
言っていないかもしれませんが)。

別件で man bash を調べていたら、こんなくだりに出会いました。
「シェルの文法」の「単純なコマンド」というところです。

  単純なコマンドの返り値はコマンドの終了コードですが、シグナル n を
  受けてコマンドが終了した場合には 128+n となります。

これですね (「終了ステータス」セクションにもほぼ同文があります)。

# fatal signal を何の疑問も持たずに「致命的なシグナル」と
# 訳しました。でも、fatal signal というのは、プログラムを
# 終了させるシグナルというだけのことなんでしょう。SIGINT とか
# SIGTERM とか SIGKILL とか。それを「致命的」と訳すのは、
# 考えてみると、大げさな気がします (たしかに、致命的と言えば
# 言えるでしょうけれど)。すでに「致命的」が訳語として定着して
# いるのかもしれませんし、別の訳語と言っても、それじゃ何にする、
# ということになりますけれど。

ところで、-d オプションの説明に出てくる your program の方は、
何なんでしょうか。

-- 
長南洋一




linuxjm-discuss メーリングリストの案内
Back to archive index