Jika saya menutup terminal virtual, tempat beberapa proses dimulai, apakah output langsung menuju /dev/null
, atau dapatkah itu mengotori memori?
Dapatkah saya mengambil output untuk melanjutkan membacanya kapan saja setelah itu?
[EDIT]:Jadi, apakah saat tidak mengakui proses secara efektif merupakan akhir dari kekuatan saya untuk mengontrol outputnya?
Saya juga memperhatikan, bahwa jika saya menolak proses yang dihentikan, pada awalnya semuanya tampak normal:itu tidak dihentikan atau ditampilkan dalam pekerjaan. Tetapi jika saya keluar (dan saya tidak berarti tutup terminal, keluar saja dari su
, misalnya), proses dihentikan. Bagaimanapun, proses yang tidak diakui yang berjalan di latar belakang dapat tetap berjalan.
Jawaban yang Diterima:
Fakta bahwa suatu proses "tidak diakui" hanya memiliki arti untuk shell interaktif yang menciptakan proses ini. Ini berarti bahwa shell tidak menyertakan (lagi) proses dalam tabel pekerjaannya, dan bahwa SIGHUP tidak akan dikirim ke proses ini ketika shell keluar. Ini tidak benar-benar terkait dengan pertanyaan Anda.
Tentang apa yang terjadi pada output yang dikirim ke terminal virtual yang dihapus:Saya melakukan beberapa pengujian sendiri, dan saya perhatikan bahwa /dev/pts/x
perangkat tidak dapat diakses, dan tidak akan dialokasikan lagi hingga semua deskriptor file yang mengarah ke perangkat tersebut telah ditutup. Jadi, saya tidak dapat melihat alasan mengapa menulis ke terminal yang dihapus akan disimpan. Saya kira ini bahkan tidak didefinisikan oleh POSIX.
Tentang mengambil output dari beberapa proses yang menulis ke terminal, saya pikir itu tidak mungkin, bahkan ketika terminal masih hidup¹. Yang dapat Anda lakukan hanyalah mengambil input langsung ke terminal (yaitu penekanan tombol, atau penekanan tombol yang disimulasikan oleh bagian master pty). Jika proses membaca di stdin apa yang tertulis di terminalnya, itu akan mengarah ke loop io mandiri untuk sebagian besar proses.
Tentang komentar terakhir tentang penghentian proses, saya tidak begitu tahu apa yang terjadi, tetapi saya menduga perilaku yang agak aneh dengan sinyal (SIGTTOU, SIGTTIN, SIGHUP, atau lainnya) terkait dengan status latar depan/latar belakang grup proses, saat sesi pemimpin keluar (mis. su
, dalam kasus yang Anda sebutkan).
Jawaban untuk Edit: Tidak, sehubungan dengan output, tidak ada yang berubah ketika suatu proses tidak diakui:proses itu masih terpasang ke terminal pengontrolnya (kecuali jika proses itu sudah terlepas sendiri seperti yang dilakukan daemon). Anda dapat melihatnya menggunakan ps
. Namun, Anda tidak akan dapat menggunakan fg
/bg
/jobs
perintah yang disediakan oleh shell lagi untuk proses ini. Artinya, mungkin sulit untuk memasukkannya dengan input dari terminal (harus berada di grup proses latar depan).
—