Se si controlla l'altro processo (con codice sorgente), il piano migliore prevede l'uso di blocchi di avviso in entrambi i processi. Questo blocco è definito in POSIX e può essere trasferito su più sistemi operativi.
In Linux, è possibile utilizzare l'utilità lsof per vedere quali file vengono aperti da altri processi.
Questo è limitato a ciò per cui si dispone delle autorizzazioni: è necessario eseguire il controllo come utente privilegiato oppure si ottengono risultati solo per i file aperti dallo stesso utente di quello che esegue il controllo.
Conosco solo l'utilità della riga di comando, non di qualsiasi chiamata di sistema che è possibile utilizzare direttamente dal codice C.
In Linux, è anche possibile attivare mandatory locking per un determinato file system (mount -o mand) e impostare flag speciali sul file (chmod g-x, g + s). Quindi, quando il tuo processo tenta di acquisire un blocco di scrittura, fallirà se un altro processo ha il file aperto. Questo non è quasi mai usato, ma se controlli completamente il sistema in questione, potrebbe essere un'opzione.
+1 Ho cercato un'applicazione che funzioni esattamente come handle.exe. Grazie ZombieSheep. – Kei