Liên lạc giữa 2 tiến trình trong C

Mình có một bài toán như này: Tạo một chương trình A, cứ 1s in 1 ký tự bất kỳ. Đến giây thứ 5 thì tạo 1 chương trình còn B ghi vào file 1 ký tự, sau đó ngủ 15s. Trong khi B chạy thì A vẫn in bình thường. Khi B kết thúc A in thông báo là B kết thúc và chạy tiếp 10s rồi kết thúc.


Cách làm của mình:

  • đến giây thứ 5 dùng làm fork() để tạo mới tiến trình.
  • trong tiến trình cha gọi hàm wait() để đợi tiến trình con kết thúc.

–> Gặp vấn đề: trong lúc wait thì A ko làm gì được.
==> Mình muốn A vẫn làm việc và vẫn biết khi nào B kết thúc.
Mong ae chỉ mình hướng tiếp cận

Hi com0t.
Mình thường không gặp fork trong lập trình mà đa phần la thread. Với yêu cầu của bạn thì có lẽ thread cũng đáp ứng được rồi.

1 Like

Do yêu cầu bắt buộc nên mình phải dùng fork().
Chạy trên linux, bạn có hướng tiếp cận nào không chỉ giùm mình với.

Hi com0t.
Trên linux thì cũng có thread bình thường mà. Mình có đọc thì khi bạn fork sẽ tạo ra một tiến trình mới chạy độc lập và có bộ nhớ ảo riêng. Khi đó để giao tiếp với nói gửi nhận thông điệp cần các kĩ thuật để giao tiếp giữa các tiến trình độc lập như : các loại socket mang, đường ống, vũng nhớ dùng chung chỉ định v.v.v… khá là phức tạp. Nếu dùng luông thì bạn vẫn dùng chung bộ nhớ ảo nên các biến toàn cục và cấp phát động có thể dùng chung như bình thường kết hợp với mutex là có thể giải quyết vấn đề của bạn.

1 Like

Bài tập này bắt buộc mình phải thực hiện tạo tiến trình mới. Nên mình không được dùng thread.

Hi com0t.
https://www.tutorialspoint.com/inter_process_communication/index.htm

1 Like

Cảm ơn @Phong_Ky_Vo.

Cảm ơn @Phong_Ky_Vo mình đã làm được rồi.
Mình sử dụng signal() kế hợp cùng wait3().
Cảm ơn link của bạn đã gửi.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?