ความจริงที่ว่ากระบวนการนั้นเป็น "ปฏิเสธ" มีเพียงความหมายสำหรับเชลล์เชิงโต้ตอบที่สร้างกระบวนการนี้ หมายความว่าเชลล์ไม่รวม (อีกต่อไป) กระบวนการในตารางงานและ SIGHUP จะไม่ถูกส่งไปยังกระบวนการนี้เมื่อเชลล์ออก มันไม่เกี่ยวข้องกับคำถามของคุณ
เกี่ยวกับสิ่งที่เกิดขึ้นกับผลลัพธ์ที่ส่งไปยังเทอร์มินัลเสมือนที่ถูกลบ: ฉันทำการทดสอบด้วยตัวเองและฉันสังเกตเห็นว่า/dev/pts/x
อุปกรณ์ไม่สามารถเข้าถึงได้และจะไม่ถูกจัดสรรอีกจนกว่าจะมีการปิดตัวบันทึกทั้งหมด ดังนั้นฉันไม่เห็นเหตุผลที่เขียนไปยังเทอร์มินัลที่ถูกลบจะถูกเก็บไว้ ฉันเดาว่านี่ไม่ได้กำหนดโดย POSIX
เกี่ยวกับการจับเอาท์พุทของกระบวนการบางอย่างที่เขียนไปยังเทอร์มินัลฉันไม่คิดว่ามันจะเป็นไปได้แม้ว่าเทอร์มินัลจะยังมีชีวิตอยู่¹ สิ่งที่คุณสามารถทำได้คือจับอินพุตโดยตรงไปยังเทอร์มินัล (เช่นการกดแป้นหรือการกดแป้นจำลองโดยส่วนหลักของ pty) หากกระบวนการจะอ่านบน stdin สิ่งที่เขียนไปยังเทอร์มินัลของพวกเขานั่นจะนำไปสู่การวนรอบ io ด้วยตนเองสำหรับกระบวนการส่วนใหญ่
เกี่ยวกับคำพูดสุดท้ายเกี่ยวกับการยุติกระบวนการฉันไม่รู้จริง ๆ ว่าเกิดอะไรขึ้น แต่ฉันสงสัยว่าพฤติกรรมที่ค่อนข้างแปลกประหลาดกับสัญญาณ (SIGTTOU, SIGTTIN, SIGHUP หรืออื่น ๆ ) ที่เกี่ยวข้องกับสถานะเบื้องหน้า / พื้นหลังของกลุ่มกระบวนการเมื่อเซสชัน ออกจากผู้นำ (เช่นsu
ในกรณีที่คุณพูดถึง)
คำตอบสำหรับการแก้ไข:ไม่เกี่ยวกับผลลัพธ์ไม่มีการเปลี่ยนแปลงเมื่อกระบวนการถูกปฏิเสธ: ยังคงแนบกับเทอร์มินัลการควบคุมของมัน ps
คุณจะเห็นว่าการใช้ อย่างไรก็ตามคุณจะไม่สามารถใช้fg
/ bg
/ jobs
คำสั่งจากเชลล์อีกต่อไปสำหรับกระบวนการนี้ ซึ่งหมายความว่าอาจเป็นเรื่องยากที่จะป้อนด้วยอินพุตจากเทอร์มินัล (ต้องอยู่ในกลุ่มกระบวนการพื้นหน้า)
-
1. ยกเว้นว่ากระบวนการยินดีหรือถูกจี้ด้วยเครื่องมือแก้ไขข้อบกพร่องบางอย่าง (ดูความคิดเห็นด้านบน)