2010-06-26 28 views
5

Tôi đang sử dụng ngôn ngữ C và Linux làm nền tảng lập trình của mình.Giao tiếp giữa hai ứng dụng trong cùng một máy cục bộ

Tôi đang phát triển một ứng dụng không gian người dùng chạy trong nền, như một daemon. Và vấn đề của tôi là, tôi muốn một ứng dụng không gian người dùng khác để giao tiếp với daemon này.

Tôi biết rằng tôi phải sử dụng phương pháp liên lạc Interprocess nhưng tôi không biết triển khai chính xác là gì.

Nhưng việc sử dụng IPC trong triển khai giao tiếp của tôi là tùy chọn khác của tôi. Trên thực tế tôi chỉ muốn thay đổi thuộc tính của daemon của tôi bằng cách sử dụng một ứng dụng khác. Vui lòng xem bên dưới senario:

  1. Trình nền của tôi chạy ẩn.
  2. Sau đó, một số ứng dụng sẽ kiểm soát các thuộc tính của một daemon, như thời gian trễ khi ngủ.

Tùy chọn đầu tiên của tôi là truy cập tệp có giá trị của thuộc tính. Vì vậy, deamon của tôi sẽ thăm dò ý kiến ​​đó giá trị. Trong khi ứng dụng khác sẽ thay đổi giá trị đó.

Tôi không chắc chắn về hiệu quả của các tùy chọn của mình. Làm ơn cho lời khuyên.

THanks.

Trả lời

4

Cập nhật tệp cấu hình và gửi tín hiệu để đọc lại là thực hành tiêu chuẩn, rẻ và dễ dàng.

3

Bạn đang tìm kiếm D-Bus. Lưu trữ các giá trị ban đầu trong một tệp, sau đó nghe qua D-Bus để yêu cầu thay đổi nó.

+0

gconf/dconf/xfconf tất cả làm chính xác những gì họ muốn (và thứ hai là dbus dựa) – Spudd86

2

Ổ cắm miền Unix là một phương pháp IPC đơn giản.

+0

Thực ra, tôi đang lập kế hoạch để tạo một thư viện chia sẻ để bất kỳ ứng dụng nào có thể sử dụng các API này để giao tiếp với daemon. Có thể sử dụng các ổ cắm miền trong loại triển khai này không? – domlao

2

Nếu tôi là bạn, tôi sẽ bỏ qua IPC hoàn toàn và thay vào đó hãy sao chép daemon một tệp cấu hình để thay đổi. IPC chỉ thực sự cần thiết nếu bạn định gửi hàng ngàn tin nhắn mỗi giây và chi phí sẽ không thể chấp nhận được.

inotify là một tùy chọn để giám sát tệp.

+0

Cảm ơn, tôi sẽ chỉ gửi tín hiệu thay vì sử dụng inotify. – domlao

+0

Tôi đồng ý sử dụng một tập tin cấu hình trong trường hợp này nhưng tôi hoàn toàn không đồng ý rằng IPC chỉ nên được sử dụng cho một cái gì đó giống như hàng ngàn tin nhắn mỗi giây. – BobbyShaftoe

1

Tôi muốn làm cho daemon nghe trên đường ống/nămo nếu đủ đơn giản để bạn chỉ cần đọc một vài byte được nạp từ một chương trình khác. Nếu không, một ổ cắm miền địa phương là tốt đẹp để chạy một giao thức đơn giản hơn.

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