Ini adalah urutan perintahnya, gedit
dimulai, tetapi tidak dapat dimatikan dari ID prosesnya
$ gedit&
$ t=$!
$ echo $t
4824
$ kill $t
bash: kill: (4824) - No such process
Ini akan bekerja dengan baik untuk sleep
proses, seperti
sleep 999&
[1] 4881
$ t=$!
$ echo $t
4881
$ kill $t
$ ps -p $t
[1] Terminated sleep 999
Apa bedanya? Bagaimana cara gedit
proses dihentikan?
Jawaban yang Diterima:
gedit
proses sudah dihentikan.
Ingat bagaimana aplikasi Windows terutama bekerja kembali di hari-hari Win16 sebelum Win32 datang dan menghapusnya:di mana ada hInstance
dan hPrevInstance
, mencoba menjalankan instance kedua dari banyak aplikasi hanya menyerahkan semuanya ke instance pertama, dan ini mempersulit alat skrip perintah (seperti Take Command) karena seseorang akan memanggil aplikasi untuk kedua kalinya, itu akan terlihat di sana di screen sebagai jendela tambahan, tetapi sejauh menyangkut penerjemah perintah, proses anak yang baru saja dijalankan segera keluar?
GNOME telah mengembalikan perilaku Win16 untuk Linux.
Dengan aplikasi GIO seperti gedit
, aplikasi berperilaku sebagai berikut:
- Jika tidak ada “server” terdaftar bernama
org.gnome.gedit
sudah ada di Bus Desktop per-pengguna/per-login,gedit
memutuskan bahwa itu adalah contoh pertama. Itu menjadiorg.gnome.gedit
server dan terus berjalan. - Jika ada “server” terdaftar bernama
org.gnome.gedit
sudah ada di Bus Desktop per-pengguna/per-login,gedit
memutuskan bahwa itu adalah contoh kedua atau berikutnya. Itu membangun pesan Bus Desktop ke instance pertama, meneruskan opsi dan argumen baris perintahnya, lalu keluar saja .
Jadi apa yang Anda lihat tergantung dari apakah Anda memiliki gedit
server sudah berjalan. Jika belum, Anda akan berada di posisi sebvieira dan bertanya-tanya mengapa Anda tidak melihat perilaku yang dijelaskan. Jika sudah, Anda akan siap dan melihat gedit
proses berakhir segera, terutama karena Anda belum memberikan opsi atau argumen baris perintah apa pun untuk dikirim ke "contoh pertama". Oleh karena itu, tidak ada lagi proses dengan ID tersebut.
Banyak kesenangan terjadi ketika, seperti yang disinggung di atas, Bus Desktop per-login dialihkan ke gaya "baru" dari Bus Desktop per pengguna, dan tiba-tiba tidak ada hubungan 1:1 antara Bus Desktop dan tampilan X. lagi. Aplikasi instans satu pengguna di seluruh bus tiba-tiba harus mampu berbicara dengan beberapa tampilan X secara bersamaan.
Kegembiraan lebih lanjut terjadi ketika orang mencoba menjalankan gedit
sebagai pengguna super melalui sudo
, karena tidak dapat terhubung ke Bus Desktop per pengguna atau terhubung ke Bus Desktop (pengguna super) yang salah.
Ada usulan untuk memberikan gedit
opsi baris perintah yang membuat proses yang dipanggil hanya menjadi aplikasi editor yang sebenarnya , sehingga gedit
akan berguna seperti yang ditunjuk editor oleh EDITOR
variabel lingkungan (yang tidak untuk banyak penggunaan umum EDITOR
, dari crontab
ke git
, ketika baru saja keluar segera). Proposal ini belum menjadi kenyataan.
Sementara itu, orang memiliki berbagai cara untuk memiliki instans kedua yang sederhana dari "editor teks ringan", seperti memanggil instans Bus Desktop yang sama sekali baru, pribadi untuk pemanggilan gedit
, dengan dbus-run-session
. Tentu saja, ini cenderung menjalankan server Bus Desktop GNOME lainnya di bus pribadi ini karena mereka dipanggil oleh gedit
, membuatnya tidak “ringan” sama sekali.
Lapisan gula pada kue adalah ketika Anda mengikuti rekomendasi ini atau yang menyukainya dan memasukkan fungsi shell bernama gedit
yang segera menghapus gedit
proses dari daftar pekerjaan shell. Prosesnya tidak hanya berhenti dengan cepat sehingga Anda tidak melihatnya nanti dengan kill
atau ps
, tetapi shell bahkan tidak memantaunya sebagai pekerjaan yang dikendalikan oleh shell.
Bacaan lebih lanjut
- Aplikasi/Gedit/NewSingleInstance. wiki GNOME. 2013.
- “Deskripsi“.
GApplication
. Wiki Pengembang GNOME. - https://stackoverflow.com/questions/7553452/
- Stefan Löffler (2011-05-04). tidak menggunakan kembali instance yang sedang berjalan saat dimulai dari nautilus. Bug #777292. Landasan peluncuran.