Saya memiliki dua sistem Linux yang berkomunikasi melalui soket (Desktop dan papan pengembangan berbasis ARM).
Saya ingin memulai ulang (atau mengatur ulang) aplikasi klien saya (berjalan di papan pengembangan) ketika server mengirim pesan yang telah ditentukan sebelumnya. Saya tidak ingin me-restart (reboot) Linux, saya hanya ingin aplikasi klien itu restart sendiri secara otomatis.
Saya tidak dapat memahami bagaimana hal itu harus dilakukan.
Jawaban yang Diterima:
Cara normal untuk melakukannya adalah dengan membiarkan program Anda keluar, dan menggunakan sistem pemantauan untuk memulai kembali. init
program menawarkan sistem pemantauan seperti itu. Ada banyak program init yang berbeda (SysVinit, BusyBox, Systemd, dll.), dengan mekanisme konfigurasi yang sama sekali berbeda (selalu menulis file konfigurasi, tetapi lokasi dan sintaks file berbeda), jadi cari dokumentasi dari yang Anda sedang menggunakan. Konfigurasi init untuk meluncurkan program Anda saat boot atau atas permintaan eksplisit, dan untuk memulai ulang jika mati. Ada juga program pemantauan yang lebih bagus tetapi sepertinya Anda tidak membutuhkannya. Pendekatan ini memiliki banyak keuntungan dibandingkan membuat program melakukan restart sendiri:ini standar, sehingga Anda dapat memulai ulang banyak layanan tanpa harus peduli bagaimana mereka dibuat; itu berfungsi bahkan jika program mati karena bug.
Ada mekanisme standar untuk memberi tahu proses untuk keluar:sinyal. Kirim program Anda sinyal TERM. Jika program Anda perlu melakukan pembersihan apa pun, tulis penangan sinyal. Itu tidak menghalangi memiliki perintah khusus program untuk mematikannya jika Anda memiliki saluran administratif untuk mengirimkannya perintah seperti ini.