سؤال

كيف أرسل إشارة 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 لجافا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top