Tôi có một số mã Perl mà thực hiện một kịch bản shell cho nhiều thông số, để đơn giản hóa, tôi sẽ chỉ cho rằng tôi có mã trông như thế này:Làm thế nào tôi có thể làm cho Perl chờ đợi cho các tiến trình con bắt đầu trong nền với hệ thống()?
for $p (@a){
system("/path/to/file.sh $p&");
}
Tôi muốn làm một số việc hơn sau điều đó, nhưng tôi không thể tìm được cách để chờ tất cả các quy trình con hoàn thành trước khi tiếp tục.
Việc chuyển đổi mã để sử dụng fork() sẽ rất khó khăn. Không phải là một cách dễ dàng hơn?
Bạn có yêu cầu mã trả lại thực tế từ tệp.sh không? Bạn có thể thay đổi kịch bản để nó ghi vào một tập tin khi hoàn thành? – mkb
Tại sao chuyển đổi mã thành ngã ba là khó khăn? Ẩn tất cả các chi tiết trong một chương trình con. Bạn thậm chí có thể xác định lại hệ thống() để gọi chương trình con mới của bạn thay thế. –
Tôi có lẽ sẽ chỉ chia phần này thành một tập lệnh riêng biệt mà không làm giả mạo, và gọi đó từ cuộc gọi hệ thống ... –