Xin chào tràn ngăn xếp: Đôi khi trình đọc, áp phích lần đầu tiên.IPC giữa ứng dụng python và được tiêm DLL
Bối cảnh:
hộp Windows chạy XP SP3, sớm được nâng cấp lên Windows Seven (MSDNAA < 3)
Tôi có một DLL tiêm mà được chu kỳ bằng cách gắn một hàm đó được gọi là hàng ngàn số lần một giây.
Tôi muốn giao tiếp/kiểm soát tệp DLL này thông qua ứng dụng python. Về cơ bản, DLL thực hiện công việc, ứng dụng python cung cấp bộ não/quyết định.
Kế hoạch trò chơi của tôi để làm điều này, là tôi sẽ có một truy cập và một tuyên bố nếu trong DLL. Mỗi lần hàm hooked được gọi, counter ++ và sau đó nhảy trở lại hàm ban đầu cho đến khi một cái gì đó giống như (counter == 250) {// dostuff(); }. Mặc dù vậy, mặc dù vậy, nó sẽ cho phép ứng dụng đích chạy hầu như không bị cản trở, nhưng vẫn cho phép tôi làm những điều thú vị.
Vấn đề:
Tôi đang ở một mất mát hoàn toàn vào phương pháp IPC tôi nên sử dụng để làm truyền thông. Chúng tôi có ổ cắm, bộ nhớ chia sẻ, đường ống, filemapping (?), RPC, và những thứ khác (dường như) bí truyền như viết vào clipboard.
Tôi KHÔNG BAO GIỜ thực hiện bất kỳ loại IPC nào ngoài các ví dụ về đồ chơi.
tôi khá chắc chắn tôi cần cái gì đó:
- thể xử lý nói chuyện qua lại giữa trăn và một DLL
- Không chặn/chờ
- có thể kiểm tra chờ đợi dữ liệu, và tiếp tục nếu không có bất kỳ
- Nếu ổ khóa có liên quan, có thể tiếp tục thay vì chờ
- không chi phí rất nhiều thời gian để đọc/ghi quá
Trợ giúp? Cảm ơn bạn đã dành thời gian, tôi hy vọng tôi đã cung cấp đủ thông tin chung và không vi phạm bất kỳ quy ước nào được chấp nhận.
Tôi muốn thêm rằng hộp câu hỏi liên quan rất tuyệt và tôi đã nghiên cứu kỹ trước khi đăng.
Sử dụng tệp nhật ký là * không * một IPC. – ulidtko
@ulidtko Hệ thống tệp là hình thức đồng bộ hóa IPC lâu đời nhất và đáng tin cậy nhất. Đó là lý do tại sao tiêu chuẩn POSIX có cùng API cho tất cả các dạng IPC. Vì hệ điều hành ** phải ** quản lý tính nhất quán và đồng bộ hóa trong các hoạt động hệ thống tệp (hoặc không được gọi là hệ điều hành), hệ thống tệp là triển khai dễ dàng nhất của IPC để sử dụng cho các chương trình không phải hệ điều hành. Hãy thử 'ls/var/run/*.pid' lần sau bạn có quyền truy cập vào hệ thống * nix. – Apalala
In ấn thậm chí còn là hình thức cũ và đáng tin cậy hơn ... lưu trữ thông tin trên giấy. OS ** phải ** quản lý tính nhất quán của nội dung sẽ được in và mọi người đều có thể quản lý mọi đồng bộ hóa cần thiết. Tại sao bạn không thử in "Hello world!" trên giấy, và sau đó quét và OCR-ing nó để kiểm soát chương trình của bạn? Xin lỗi, nhưng bình luận của bạn không chỉ là một đối số. Máy in nên in tài liệu, hệ thống tập tin nên lưu trữ tập tin, ổ cắm ống-shmem nên cung cấp các cách để thực hiện IPC. – ulidtko