إرسال إشارة posix من JVM
-
01-10-2019 - |
سؤال
كيف أرسل إشارة posix من داخل JVM؟ (في جافا أو clojure)
لم أكن أعتقد أن هذه ستكون مشكلة حتى جربتها - هناك الكثير من المعلومات حول معالجة إشارات ، ولكن لا شيء عن إرسالها.
أقل من استخدام JNI أو الاتصال بالقذيفة لتنفيذ "Kill" ، هل هناك أي طريقة أخرى لإرسال إشارة إلى PID؟
المحلول
موافق. الرد على نفسي: نظرت إلى المكتبات المقترحة ، لكنني أشعر بالقلق من تقديم تبعيات جديدة على الكثير من التعليمات البرمجية ، خاصةً إذا كنت سأستخدم جزءًا صغيرًا منها فقط.
اتضح أن أسهل طريقة هي استخدام JNA والواجهة مع واجهة برمجة تطبيقات النظام (LIBC). في Clojure هذا إلى حد كبير إلى:
(jna-invoke integer krand pid signo)
بعد القيام بـ (: استخدم net.n01se.clojure-jna) بالطبع.
نظرًا لأن هذا البرنامج لا يهدف إلى تشغيل Windows على الإطلاق ، فأنا على ما يرام مع هذا الحل الذي يجب أن يعمل على جميع أنظمة Posix (MacOS و Linux هي ما يهمني).
نصائح أخرى
إشارات POSIX هي وظائف محددة OS ، ولكن JVM تحاول أن تكون OS مستقلة VM. لذلك لا توجد وظائف قياسية لهذا.
ولكن يمكنك تنفيذ أوامر shell (باستخدام مدة العرض الفصل) أو استخدم بعض lbrary لاحتياجاتك ، مثل أ Posix لجافا