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 chec
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().