Runtime.exec(String) menyediakan cara untuk melaksanakan perintah sistem daripada program Java. Walau bagaimanapun, pengguna mungkin menghadapi percanggahan dalam hasil pelaksanaan, dengan arahan tertentu berjaya manakala yang lain gagal atau berkelakuan di luar jangkaan. Artikel ini mengkaji sebab asas anomali ini dan meneroka pendekatan alternatif untuk pelaksanaan perintah yang boleh dipercayai.
Arahan gagal apabila mereka bergantung pada perkhidmatan asas yang disediakan oleh shell, yang tidak digunakan oleh Runtime.exec(String). Perkhidmatan ini termasuk:
Arahan akan gagal apabila mereka menggunakan mana-mana ciri cangkerang yang dinyatakan di atas. Senario biasa termasuk yang melibatkan:
-nama fail dengan ruang atau aksara khas
-Wildcard atau glob
-Pengubah hala input/output
-Pembolehubah atau arahan persekitaran pengembangan
Dua pendekatan utama wujud untuk memintas anomali ini dan melaksanakan arahan dengan pasti:
Pewakilan kepada Shell (Penyediaan tetapi Cacat):
Satu pilihan ialah mewakilkan pelaksanaan kepada shell, seperti bash, yang mengendalikan semua perkhidmatan yang diperlukan. Walau bagaimanapun, pendekatan ini mungkin menimbulkan risiko keselamatan dan menjejaskan keteguhan.
Penggantian Shell (Secure dan Robust):
Pendekatan yang lebih selamat dan teguh adalah dengan memikul tanggungjawab shell . Ini melibatkan pemahaman model pelaksanaan Unix, perkhidmatan yang disediakan oleh cangkerang, dan cara menirunya secara pemrograman. ProcessBuilder menyediakan cara untuk mencapai ini dengan mengendalikan pemisahan perkataan, pengembangan pembolehubah dan pengalihan semula secara manual.
Atas ialah kandungan terperinci Mengapa `Runtime.exec(String)` Gagal, dan Bagaimana Saya Boleh Melaksanakan Perintah Sistem dengan Amanah di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!