كيفية تشغيل أوامر طرفية Windows و Linux و macOS في Java وإرجاع النتيجة الكاملة

نشرت: 2019-02-26

قم بتنفيذ أوامر Linux mkdir و ls -ltra و ping في Java

يعد تنفيذ system command أمرًا بسيطًا نسبيًا - بمجرد رؤيته يتم تنفيذه في المرة الأولى.

يتضمن استخدام فئتين من فئات Java ، فئة Runtime وفئة Process. بشكل أساسي ، يمكنك استخدام exec method لفئة Runtime لتشغيل الأمر كعملية منفصلة.

يؤدي استدعاء طريقة exec إلى إرجاع كائن Process لإدارة العملية الفرعية. ثم تستخدم getInputStream() و getErrorStream() لكائن Process لقراءة الإخراج العادي للأمر ، وإخراج الخطأ للأمر. ما تفعله بإخراج الأمر المنفذ متروك تمامًا لك وللتطبيق الذي تقوم بإنشائه.

تعمل ProcessBuilder.start() و Runtime.exec على إنشاء عملية أصلية وإرجاع مثيل لفئة فرعية من Process يمكن استخدامها للتحكم في العملية والحصول على معلومات عنها.

توفر Process الفصل طرقًا لأداء المدخلات من العملية ، وتنفيذ المخرجات للعملية ، وانتظار اكتمال العملية ، والتحقق من حالة الخروج من العملية ، وتدمير (قتل) العملية.

قد لا تعمل الطرق التي تنشئ العمليات بشكل جيد للعمليات الخاصة على بعض الأنظمة الأساسية الأصلية ، مثل عمليات النوافذ الأصلية أو العمليات الخفية أو عمليات Win16 / DOS على Microsoft Windows أو البرامج النصية لـ shell.

بشكل افتراضي ، لا تحتوي العملية الفرعية التي تم إنشاؤها على محطة طرفية أو وحدة تحكم خاصة بها. ستتم إعادة توجيه جميع عمليات الإدخال / الإخراج القياسية (مثل stdin ، و stdout ، و stderr) إلى العملية الأصلية ، حيث يمكن الوصول إليها عبر التدفقات التي تم الحصول عليها باستخدام الطرق getOutputStream() ، و getInputStream() ، و getErrorStream() .

تستخدم العملية الرئيسية هذه التدفقات لتغذية المدخلات والحصول على المخرجات من العملية الفرعية. نظرًا لأن بعض الأنظمة الأساسية الأصلية توفر فقط حجمًا محدودًا للمخزن المؤقت لتدفقات الإدخال والإخراج القياسية ، فإن الفشل في كتابة دفق الإدخال أو قراءة دفق الإخراج للعملية الفرعية قد يتسبب في حظر العملية الفرعية أو حتى الوصول إلى طريق مسدود.

فيما يلي مثالان بسيطان على Java للرجوع إليها.

مثال 1. قم بتنفيذ mkdir و ls -ltra و ping في Java

  • قم بإنشاء ملف CrunchifyCommandJava.java
  • mkdir /Users/ashah/Desktop/new-folder
  • ls -ltra /Library
  • ping crunchify.com

تأكد من تغيير المسار وفقًا لذلك في البرنامج أعلاه وفقًا لإعدادات نظامك.

إخراج وحدة التحكم Eclipse:

ما عليك سوى تشغيل البرنامج أعلاه كتطبيق Java وسترى نتيجة مماثلة.

مثال 2.

  • CrunchifyRunCommand.java
  • قم بتنفيذ الأمر ps -few للحصول على قائمة بجميع العمليات التي تعمل على نظامك.

إخراج وحدة التحكم Eclipse:

هذه بعض العمليات التي تعمل على جهاز MacBook Pro الخاص بي. يوجد عدد غير قليل ولكن تم لصق القليل جدًا.

آمل أن يساعدك هذا البرنامج التعليمي في تشغيل أي أوامر طرفية في نظام التشغيل Linux و macOS باستخدام برنامج Java بسيط. اسمحوا لي أن أعرف لأية أسئلة.