Bir sürecin "reddedilmesi" gerçeği, bu süreci oluşturan etkileşimli kabuk için yalnızca bir anlama sahiptir. Bu, kabuğun işleri tablosuna işlemi (artık) içermemesi ve kabuk çıkarken SIGHUP'ın bu işleme gönderilmeyeceği anlamına gelir. Gerçekten sorularınızla ilgili değil.
Silinen bir sanal terminale gönderilen çıktılara ne olduğu hakkında: Bazı testler kendim yaptım ve /dev/pts/x
cihazların erişilebilir olmadığını ve kendilerine işaret eden tüm dosyalayıcılar kapatılıncaya kadar tekrar tahsis edilmediğini fark ettim . Bu nedenle, silinmiş bir terminale yazma işleminin kaydedilmesinin bir nedeni göremiyorum. Sanırım bu POSIX tarafından bile tanımlanmadı.
Bir terminale yazan bazı işlemlerin çıktısını almak konusunda, terminal hala canlı olsa bile bunun mümkün olduğunu sanmıyorum. Tek yapabileceğiniz tek şey terminale doğrudan giriş kapmaktır (yani tuş vuruşlarını veya bir pty'nin ana kısmı tarafından yapılan tuş vuruşlarını). İşlemler stdin üzerinden terminallerine yazılanları okuyacak olsaydı, bu çoğu işlem için kendi kendine bir döngüye yol açardı.
İşlem sonlandırması konusundaki son sözler hakkında ne olduğunu tam olarak bilmiyorum, ancak oturum sırasında işlem gruplarının ön plan / arka plan durumuna ilişkin sinyallerle (SIGTTOU, SIGTTIN, SIGHUP veya diğerleri) ilgili garip davranışlardan şüpheleniyorum. lider çıkar (örneğin su
, bahsettiğiniz durumda).
Düzenlemeye Cevap : Hayır, çıktıyla ilgili olarak, bir işlem reddedildiğinde hiçbir şey değişmez: hala kontrol terminaline eklenir (zaten zaten daemonlar gibi kendiliğinden ayrılmadığı sürece). Bunu kullanarak görebilirsiniz ps
. Bununla birlikte, bu işlem için artık kabuk tarafından sağlanan fg
/ bg
/ jobs
komutlarını kullanamazsınız . Bu, terminalden gelen girdilerle beslenmenin zor olabileceği anlamına gelir (ön plan işlem grubunda olması gerekir).
-
1. Süreç bazı hata ayıklama araçlarına istekli ya da kaçırılmadığı sürece (yukarıdaki yorumlara bakınız).