Thông thường, một gói ứng dụng trên OS X chỉ có thể được bắt đầu một lần, tuy nhiên chỉ cần sao chép gói, cùng một ứng dụng có thể được khởi chạy hai lần. Chiến lược tốt nhất để phát hiện và ngăn chặn khả năng này là gì? Trên Windows, hiệu ứng này chỉ đơn giản có thể đạt được bằng ứng dụng tạo tài nguyên được đặt tên khi khởi động và sau đó thoát nếu tài nguyên được đặt tên không thể được tạo ra, chỉ ra rằng một tiến trình khác đang chạy đã tạo ra cùng một tài nguyên. Các tài nguyên này được phát hành một cách đáng tin cậy trên Windows khi ứng dụng thoát. Vấn đề tôi đã thấy khi nghiên cứu này là các API trên OS X giữ trạng thái trong hệ thống tệp và do đó làm cho chiến lược được sử dụng trên các cửa sổ không đáng tin cậy, tức là các tệp kéo dài sau khi thoát không đúng có thể biểu thị sai rằng ứng dụng đã đang chạy.Cách phát hiện xem ứng dụng OS X đã được khởi chạy chưa
Các API tôi có thể sử dụng để đạt được hiệu ứng tương tự trên OS X là: posix, carbon và boost.
Ý tưởng?
Tại sao bạn thậm chí muốn làm điều này? Không giống như Windows, hệ điều hành sẽ chăm sóc ngăn chặn nhiều phiên bản của một ứng dụng chạy trong trường hợp phổ biến. Trong trường hợp không phổ biến, tại sao ngăn chặn nó? –
Ứng dụng được đề cập là trò chơi. Bằng cách chạy nhiều bản sao của trò chơi trên một máy tính, người chơi sẽ có lợi thế không công bằng so với người chơi khác trong một số trường hợp. –