<   2009年 11月 ( 1 )   > この月の画像一覧
disown
tcsh から zsh へ移行して半年くらい経った.
戸惑うというか,何か面倒だなと思っていた点のひとつに
GUI アプリケーション(ほぼ ImageJ のみ)をインタラクティブシェルから起動した後に
シェルだけ終わらせようとすると

~/wc/kbi/ijp/src% exit
zsh: you have running jobs.

と言われ,もう1回 exit すると ImageJ も終わってしまうという挙動があったので
思いたって調べてみた.

disown という内部コマンドを実行すれば,ひとまず警告は出ず,また,
子プロセスは終了しないことがわかった(bash にも同名の内部コマンドがあるらしい).
ただし複数のバックグラウンドジョブがある場合には,それぞれに発行しないといけないようだ
(引数にジョブ番号を与えることができる).

別のアプローチとして,バックグラウンドジョブ投入時に & でなく &! を使ってもいいらしい.
結局,こちらの方法を用い,これまでの ~/.zshrc の

function ij() {
"${HOME}/wc/kbi/ImageJ/imagej_boot.py" $* &
}


function ij() {
"${HOME}/wc/kbi/ImageJ/imagej_boot.py" $* &!
}

に書き換えた.
[PR]
by edogawadai_bio | 2009-11-09 22:00 | comp