Jeśli kontrolujesz drugi proces (ma kod źródłowy), najlepszym planem jest użycie blokad doradczych w obu procesach. To blokowanie jest zdefiniowane w POSIX i będzie przenośne w różnych systemach operacyjnych.
W systemie Linux można użyć narzędzia lsof, aby zobaczyć, jakie pliki są otwierane przez inne procesy.
Jest to ograniczone do tego, na co masz uprawnienia - musisz zrobić czek jako uprzywilejowany użytkownik, lub uzyskasz wyniki tylko dla plików otwartych przez tego samego użytkownika, co ten, który sprawdza.
Wiem tylko o narzędziu wiersza poleceń, a nie o wywołaniu systemowym, którego można użyć bezpośrednio z kodu C.
W systemie Linux można również włączyć mandatory locking dla danego systemu plików (mount -o mand) i ustawić specjalne flagi w pliku (chmod g-x, g + s). Następnie, gdy proces próbuje uzyskać blokadę zapisu, nie powiedzie się, jeśli inny proces ma otwarty plik. To prawie nigdy nie jest używane, ale jeśli całkowicie kontrolujesz dany system, może to być opcja.
+1 Szukałem aplikacji, która robi dokładnie to, co robi handle.exe. Dzięki ZombieSheep. – Kei