How to lock a file in unix?

We wish to keep a sequence number in a file. When someone wants to get the next sequence number we need to lock the file, get the next number and increment it by one. How do you do that?

I know how to get the number and increment it but how do I lock the file and test that it is locked or not locked.
x=`cat filewithseq`
x=x+1
echo $x > filewithseq
Someone must be doing this already. I know that printer job numbers work in a similar way.

In this situation, people usually create a test condition before opening the file and operating on the sequence number. The normal test condition is the existance of a temporary file i.e. yourprogramname.LOCK.

Before a script or command opens the file, it first tests for the existance of the LOCK file. If the file exists, the process terminates. How it terminates depends on the user requirements.

That is how it is normally done with scripts. If you need a more atomic method, you must use system calls closer to the kernel and this will require C (or some other) programming wrapper.