プロセスは、バックグラウンドになったことをどのようにして知るのでしょうか?
質問
ファイルをscpするとき、^ Zで停止してバックグラウンドに置くことができます。バックグラウンドにあるとき、進行状況の印刷を停止しますが、コピーは続行します。もう一度フォアグラウンドにすると、印刷が再開されます。どうやってわかるの? SIGTTOU?それは標準のpttyで起こりますか?
解決 2
私の同僚と私は実際にソースを調べて、答えを見つけました。
scpが出力を印刷しようとするたびに、stdoutでtcgetpgrpが実行されます。これにより、端末の制御プロセスグループが返されます(端末であると仮定)。端末を制御するプロセスグループがscpのプロセスグループと同じ場合にのみ出力されます。シグナリングは不要です! (ただし、進行ラインのサイズを計算するためにSIGWINCHを処理します)。
他のヒント
はい、わかりました。プロセスは、SIGTTOU(および、実行している内容に応じてSIGTTIN)をトラップまたは無視し、それらのシグナルを受信したときに適切に動作します。 Linuxは実際に通常の擬似端末でこれらの信号を送信します。
所属していません StackOverflow