Tôi đã thực hiện một chương trình bằng cách sử dụng fork()
và exec*()
. Vấn đề là tôi không thể xác định thành công hay thất bại của exec()
từ quá trình cha mẹ vì nó trên quá trình con riêng biệt. Tôi nghĩ rằng loại tín hiệu có thể được sử dụng để kiểm tra trạng thái này, nhưng tôi không có ý tưởng về điều này.Cách tiếp cận tiêu chuẩn để xác định thành công hay thất bại của ngã ba/exec (trong khi cha mẹ đang chạy đồng thời)?
- Cách được đề xuất/tiêu chuẩn/được sử dụng rộng rãi để kiểm tra điều này là gì?
- Và những cạm bẫy mà tôi phải quan tâm khi thực hiện việc này là gì?
Câu hỏi chi tiết Cập nhật (Xin lỗi vì thiếu sót chi tiết quan trọng)
tôi muốn giữ cả hai quá trình đang chạy vì vậy tôi không thể chỉ chờ xuất cảnh của tiến trình con. Nói cách khác, tôi muốn được thông báo về quy trình con 'exec
thành công hay thất bại'.
Bạn biết rằng bạn có thể truy vấn trạng thái con mà không chặn bằng cách sử dụng tùy chọn 'waitpid' và 'WNOHANG'? Tùy thuộc vào hệ thống của bạn, bạn cũng có thể có 'wait3' và' wait4' cũng hiểu cờ này. Hay bạn muốn báo hiệu điều gì đó cho phụ huynh trong khi vẫn giữ cho đứa trẻ đang chạy (như với các ẩn dụ IPC)? – DarkDust
@DarkDust Tôi muốn giữ cho cả hai quy trình đang chạy và tôi muốn được thông báo về trạng thái con ''exec'. (thành công hay thất bại) Oh bạn đã xóa câu hỏi của tôi. Cảm ơn :) – Eonil
có thể trùng lặp của [Điều gì có thể khiến exec thất bại? Điều gì sẽ xảy ra tiếp theo?] (Http://stackoverflow.com/questions/3703013/what-can-cause-exec-to-fail-what-happens-next) (Đặc biệt, xem [câu trả lời từ "R."] (http://stackoverflow.com/questions/3703013/#3703179)) – Nemo