Apakah mungkin untuk mengubah proses induk dari suatu proses? Jika ya, bagaimana?
Sebagai contoh,
bagaimana cara
screen
melampirkanscreen
sesi dan proses yang berjalan di dalamnya untuk proses shell yang berbeda? Apakah ada perubahan proses induk?Saya sepertinya mendengar cara-cara lain untuk mengubah proses shell di mana sebuah program berjalan, tetapi saya tidak ingat. Apakah ada perubahan proses induk program?
Saya pikir
disown
pada suatu proses mengubah proses induk dari proses, hanya karena namanyadisown
menyiratkan itu. Tetapi saya menemukan itu tidak benar.Klien Emacs dapat melampirkan ke server emacs pada tab terminal yang berbeda. Apakah ada perubahan proses induk?
getppid(2)
, panggilan sistem, dan panggilan sistem ditangani oleh kernel. Suatu program dapat dikacaukan dengan mengeluarkan panggilan itu, menyimpan nilai, dan kemudian menggunakan nilai itu setelah asal usulnya telah berubah. Ada kemungkinan kondisi balapan di sini.
disown
hanya menghapus anak yang diberikan dari daftar internal proses anak shell. PPID anak tetap milik shell. Shell lupa bahwa itu pernah memulai anak itu, tetapi kernel ingat.