أولاً ، نحتاج إلى زيادة أذونات تنفيذ المستخدم للنص ، أي ،
نسخة الكود كما يلي:
String cmdString = "chmod a+x test.sh" ؛
Process proc = runtime.getRuntime (). exec (cmdString) ؛
proc.waitfor () ؛
CMDSTRING = "Bash Test.sh" ؛
proc = runtime.getRuntime (). exec (cmdString) ؛
// انتبه إلى العمليات التالية
سلسلة ls_1 ؛
BufferedReader BufferedReader = جديد BufferedReader (inputStreamReader جديد (proc.getInputStream ()) ؛
بينما ((ls_1 = bufferedReader.ReadLine ())! = null) ؛
BufferedReader.Close () ؛
proc.waitfor () ؛
لماذا تحتاج العملية أعلاه؟
والسبب هو: قد يكون إخراج البرنامج القابل للتنفيذ كبيرًا نسبيًا ، في حين أن المخزن المؤقت للإخراج من نافذة التشغيل محدودة ، مما سيؤدي إلى حظر الانتظار طوال الوقت. يتمثل الحل في استخدام أساليب GetInputStream و GeterRorStream التي توفرها فئة العملية التي توفرها Java للسماح لجهاز Java Virtual بتعبئة الإخراج القياسي وإخراج الخطأ للبرنامج المتصل ، وقراءة المحتويات في المخزن المؤقت للإخراج قبل Waitfor () يأمر.
أتمنى أن يعجبك هذا المقال.