2016-03-10 15 views
7

chương trình java của tôi tạo ra một quá trình theo cách sau đây:Quy trình java Daemon - có một thứ như vậy không?

ProcessBuilder builder = new ProcessBuilder("phantomjs.exe crawl.js"); 
Process proc = builder.start(); 

Trong trường hợp chương trình java chấm dứt đột ngột (luôn luôn có thể xảy ra), quá trình phantomjs (mà không phải là một quá trình java) có thể sống sót và có sẽ không có cách nào để chấm dứt nó.

Tôi muốn quá trình phantomjs bị chấm dứt khi quá trình java kèm theo chấm dứt (cho dù đột ngột hay không).

Có cách nào để xác định cá thể Process dưới dạng đối tượng "daemon" tự động chấm dứt khi quá trình siêu của nó (là quá trình java thực thi mã ở trên) chấm dứt không?

+0

Tại sao không sử dụng [shutdown hooks] (https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#addShutdownHook (java.lang.Thread))? –

+0

Móc tắt máy sẽ không giúp đỡ khi quá trình đóng đột ngột – KidCrippler

+0

@GentiSaliu Tôi không nghĩ rằng thẻ javascript là gây hiểu lầm. Người ta có thể đưa ra một cách để làm những gì tôi cần từ bên trong mã javascript mà các ma thực thi. – KidCrippler

Trả lời

1

Các API documentation có vẻ khá nhất định, không có bằng cấp hay chồn-từ ngữ:

Các tiến trình con được không thiệt mạng khi không có nhiều tài liệu tham khảo cho các đối tượng Process, nhưng đúng hơn là subprocess tiếp tục thực hiện đồng bộ.

Vì vậy, cha mẹ phải giết nó, nó sẽ không biến mất khi cha mẹ chấm dứt.

+1

Yup, tôi cũng đọc tài liệu. Tôi tự hỏi nếu có bất kỳ khuôn khổ hoặc thư viện của bên thứ ba bao bọc đối tượng Process và cung cấp chức năng mong muốn. – KidCrippler

+0

@KidCrippler: đúng, tôi hiểu điều này cung cấp giá trị giới hạn. tôi figured nếu điều này là không đúng và có một số loại tùy chọn ai đó sẽ bắn nó xuống. –

Các vấn đề liên quan