How to check if a file is already open by another process in C?
c, file, windows
Solution
There's no way tell, unless the other process explicitly forbids access to the file. In MSVC, you'd do so with `_fsopen()`, specifying `_SH_DENYRD` for the shflag argument. The notion of being interested whether a file is opened that isn't otherwise locked is deeply flawed on a multitasking operating system. It might be opened a microsecond after you'd have found it wasn't. That's also the reason that Windows doesn't have a IsFileLocked() function.
If you need synchronized access to files, you'll need to add this with a named mutex, use CreateMutex().
Problem
I see that standard C has no way of telling if a file is already opened in another process. So the answer should contain several examples for each platform. I need that check for Visual C++ / Windows though.