bash:( &)
と( ) &
.
私が気付いた唯一の違いは、現在の tty 名を返すの(tty &)
に対し、「not a tty」を(tty) &
返すことですが、なぜですか?
例を挙げると、またはを実行する必要があります(setsid startx &)
か(setsid startx) &
?
の場合
(tty &)
ジョブ制御と端末なしでバックグラウンドで別のプロセスを開始するサブシェルが開始されるtty
ため、「not a tty」エラーが発生します。tty
プロセスは PPID 1 で切り離されます
の場合
(tty) &
サブシェルが開始され、バックグラウンドで実行されます。このバックグラウンド シェルはtty
プロセスを開始し、tty が終了して端末に報告した後、サブシェルはバックグラウンドで終了します。
--
tty
簡単なコマンドです。startx
特定のコマンド ( など) が( ... &)
親プロセスから切り離されたり所有権を剥奪されたりするために構造が必要かどうかは、コマンド自体によって異なります。プロセスがサブプロセスを開始してそれをデタッチする方法はいくつかあるため、コマンドでは必要ない場合があります。