長南洋一
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 の方は、 何なんでしょうか。 -- 長南洋一