Tag Archives | PIPE

[Java] Runtime.exec() stream

ได้งานประหลาดมาอย่างพี่บอกว่า process Java เปิด PIPE เต็มไปหมดหามาให้หน่อยเกิดจากอะไร ช่วยกันขุดไปมาสามคนสุดท้ายพบว่ามาจาก Runtime.exec() ที่เปิด Stream ให้ทีเดียว 3 Stream แล้วโค้ดเก่าที่เอามาใช้ดันปิดแค่อันเดียวที่ดึงผลลัพธ์ออกมา สิ่งที่เกิดขึ้นคือถ้า Process ทำงานไปเรื่อยๆ แล้วเรียก Runtime.exec() ซ้ำไปมา PIPE ก็จะโผล่ขึ้นมาเรื่อยๆ ประมาณนี้ วิธีแก้ก็ง่ายๆ ได้ Process ออกมาเสร็จใช้แล้วก็ปิด Stream ที่ให้มาด้วยซะ เช่นๆ คำถามคือถ้าไม่ปิดจะเกิดอะไรขึ้นมั้ย จากเท่าที่สังเกตคือ ถ้าไม่ยอมปิดมันก็จะหายไปอย่างเงียบๆ เมื่อถึงเวลาหนึ่งแต่เพื่อความปลอดภัย ใช้แล้วก็ปิดเถอะ

Read full story Comments { 6 }