Runtime.exec(String) থেকে ProcessBuilder আর্গুমেন্টে
স্পষ্ট আর্গুমেন্ট তালিকা ও ProcessBuilder কনফিগারেশন দিয়ে প্রসেস চালু করুন।
কোড তুলনা
✕ Command string
Process process = Runtime.getRuntime()
.exec("git show " + revision);
✓ ProcessBuilder
Process process = new ProcessBuilder(
"git", "show", revision)
.redirectErrorStream(true)
.start();
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
নির্ভুল আর্গুমেন্ট
কমান্ড-স্ট্রিং টোকেনাইজেশন ছাড়াই প্রতিটি প্রসেস আর্গুমেন্ট আলাদা মান হিসেবে থাকে।
স্পষ্ট কনফিগারেশন
এনভায়রনমেন্ট, ডিরেক্টরি, রিডাইরেক্ট ও এরর হ্যান্ডলিং একসঙ্গে কনফিগার করা যায়।
নিরাপদ সীমানা
ডায়নামিক মান দিয়ে শেল-সদৃশ কমান্ড স্ট্রিং তৈরি করা এড়ায়।
পুরনো পদ্ধতি
Runtime.exec(String)
আধুনিক পদ্ধতি
ProcessBuilder
JDK থেকে
5
কঠিনতা
মধ্যম
JDK সমর্থন
Runtime.exec(String) থেকে ProcessBuilder আর্গুমেন্টে
উপলব্ধ
JDK 5 (সেপ্টেম্বর 2004) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
Runtime.exec(String) জাভার কমান্ড-স্ট্রিং টোকেনাইজেশন প্রয়োগ করে, আর্গুমেন্টে স্পেস বা উদ্ধৃতি চিহ্ন থাকলে যা সহজেই ভুল বোঝা যায়। ProcessBuilder প্রোগ্রামের আর্গুমেন্টগুলোকে আলাদা মান হিসেবে নেয় এবং কার্যকরী ডিরেক্টরি, এনভায়রনমেন্ট, ইনপুট/আউটপুট রিডাইরেক্ট ও এরর-স্ট্রিম নীতি স্পষ্টভাবে প্রকাশ করে। অ্যাপ্লিকেশন ইচ্ছাকৃতভাবে শেল চালু না করলে এটি কোনো শেল ডাকে না।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ