ก่อนอื่นเราต้องเพิ่มสิทธิ์การดำเนินการของผู้ใช้สำหรับสคริปต์นั่นคือ
การคัดลอกรหัสมีดังนี้:
สตริง cmdstring = "chmod a+x test.sh";
กระบวนการ 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 Machine สามารถสกัดกั้นเอาต์พุตมาตรฐานและเอาต์พุตข้อผิดพลาดของโปรแกรมที่เรียกว่าและอ่านเนื้อหาในบัฟเฟอร์เอาท์พุทก่อนที่จะรอ () สั่งการ.
ฉันหวังว่าคุณจะชอบบทความนี้