- - PR -
バックグラウンド起動時の戻り値について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-16 15:04
#SunOS 5.9
#Bシェル rshコマンドを利用して、バックグラウンドでリモートシェルを 起動した場合の戻り値についてお聞きします。 -------------------------------- #!/bin/sh $HOSTNAME=hos $RSH_COM="remote.sh -go" /usr/bin/rsh $HOSTNAME $RSH_COM & <---☆ echo "ret=($?)" -------------------------------- 上記のように、バックグラウンドで起動した場合、 もしremote.shが存在していなくても、 戻り値は0(remote.shの起動に成功)になってしまいます。 ret=0 フォアグラウンドで起動した場合には、 戻り値は1(remote.shが異常終了)となります。 permission denied ret=(1) バックグラウンドで起動した場合に、 リモートシェルの”起動”に成功したか 失敗したかを取得することはできないのでしょうか? [ メッセージ編集済み 編集者: 未記入 編集日時 2004-09-16 15:05 ] | ||||||||
|
投稿日時: 2004-09-16 17:36
こんな事やった事無いんではっきりした答が出せんのですが、
rsh 実行先マシン foobar のホームディレクトリ /home/hogera/ かどっかで
こんな内容のファイル作って、仮にファイル名 nop で保存して実行権限つけたら、 rsh 実行元で if [ `rsh foobar pwd` ] ; then echo 1; else echo 0; fi これを実行した結果と if [ `rsh foobar /home/hogera/nop` ]; then echo 1; else echo 0; fi これを実行した結果が違ごてますんで、これがヒントぐらいにはなるかも・・・ 糞の役にも立たんて? (プ そら失礼。 | ||||||||
|
投稿日時: 2004-09-16 18:58
話は少しそれるかもしれませんが、
リモートシェルの戻り値は フォアグラウンド起動/バックグラウンド起動に関わらず、 取得できないようです。 | ||||||||
|
投稿日時: 2004-09-16 19:03
Perl とか C の system(); 関数で Wrapping したら?
どうせ10行あるか無いかぐらいやろから・・・ rsh は対象外かな? | ||||||||
|
投稿日時: 2004-09-16 23:01
rsh に限らず、バックグラウンドで起動したコマンドの 終了ステータスが $? にセットされることはありません。 終了ステータスを取得するのが技術的に不可能というわけでは ありません。wait系システムコールを使って取得する プログラムは書けます。 # わかりにくい表現だったので追記。 要するに、シェル組み込みの wait コマンドなんかで終了ステータスを 取得できるようになっているんでないかしら?とゆーことです。 なお、シェルから起動したプロセスの終了ステータスを取得するには 組み込みコマンドになってないと不可です。
rsh じゃなくて ersh を使うとか ssh を使うとかすればO.K. [ メッセージ編集済み 編集者: ぽんす 編集日時 2004-09-17 08:38 ] |
1