What is the best way on Linux platform for the process (C++ application) to check its instance is not already running?
You could use a POSIX named semaphore to do this. It is much safer than using a file lock.