2010-06-18 30 views
5

Tình huống mà tôi đang gặp phải là - có một quy trình đang ghi vào tệp, đôi khi tệp lớn hơn 400 - 500MB. Tôi cần biết khi nào nó được viết xong. Làm thế nào tôi có thể xác định điều này? Nếu tôi nhìn vào thư mục tôi sẽ thấy nó ở đó nhưng nó có thể không được thực hiện bằng văn bản. Ngoài ra, điều này cần được thực hiện từ xa - giống như trên cùng một mạng LAN nội bộ nhưng không phải trên cùng một máy tính và thường là quá trình muốn biết khi nào việc ghi tệp được thực hiện đang chạy trên một hộp Linux với quá trình ghi tệp và bản thân tệp trên hộp cửa sổ. Không samba không phải là một lựa chọn. xmlrpc giao tiếp với một dịch vụ trên cửa sổ hộp là một tùy chọn cũng như sử dụng snmp để kiểm tra xem đó là khả thi.Cần một cách để xác định xem tệp có được viết thành

Lý tưởng nhất

  • trình trên Linux hay Windows - có nghĩa là giải pháp là hệ điều hành độc lập.
  • Làm việc cho bất kỳ loại tệp nào.

Tốt đủ:

  • trình chỉ trên cửa sổ nhưng có thể được thực hiện thông qua một số thư viện hay bất cứ điều gì mà có thể được truy cập với Python.
  • Chỉ hoạt động đối với tệp PDF.

Ý tưởng tốt nhất hiện tại là định kỳ mở tệp được đề cập từ một số quy trình trên hộp cửa sổ và xem xét các byte cuối cùng kiểm tra thẻ kết thúc PDF và tính toán sự khác biệt về eol vì tệp có thể đã được tạo Linux hoặc Windows.

+1

Có thể thấy điều này hữu ích: http://stackoverflow.com/questions/589407/python-how-to-check-if-a-file-is-used-by-another-application Kết hợp (1) với xmlrpc và có thể bạn đang kinh doanh. – gilesc

+0

Cảm ơn gilsec đã thực sự cung cấp thực phẩm tốt cho tư tưởng. – Khorkrak

Trả lời

0

Tôi đã quyết định giải quyết vấn đề này cho hoàn cảnh của mình. Khi nó chỉ ra quá trình đã được viết các tập tin ra họ đã mở độc quyền vì vậy tất cả chúng ta phải làm là cố gắng mở chúng để đọc truy cập - khi bị từ chối họ đang sử dụng.

6

Có thể có nhiều cách tiếp cận bạn có thể thực hiện. Tôi sẽ cố gắng để mở tập tin với quyền truy cập ghi. Nếu điều đó thành công thì không ai khác đang ghi vào tập tin đó.

Tạo một dịch vụ web xung quanh khái niệm này nếu bạn không có quyền truy cập trực tiếp vào tệp giữa các máy.

+0

Vâng, chúng tôi đã suy nghĩ về việc đó hoặc cố gắng di chuyển/đổi tên tệp để xem liệu nó có thành công khi chúng ta thấy nó có trong thư mục hay không. Đối với điều kiện chủng tộc tốt tôi không thấy bất kỳ ở đây bởi vì chúng tôi sẽ chỉ thử nó một lần chúng tôi thấy tập tin (có nghĩa là quá trình viết đã mở nó để viết và có thể hoặc có thể không có đóng nó.) – Khorkrak

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