This command is part of the TclX package.

flock options fileId ?start? ?length? ?origin?

This command places a lock on all or part of the file specified by fileId. The lock is either advisory or mandatory, depending on the mode bits of the file. The lock is placed beginning at relative byte offset start for length bytes. If start or length is omitted or empty, zero is assumed. If length is zero, then the lock always extents to end of file, even if the file grows. If origin is “start”, then the offset is relative to the beginning of the file. If it is “current”, it is relative to the current access position in the file. If it is “end”, then it is relative to the end-of-file (a negative is before the EOF, positive is after). If origin is omitted, start is assumed.

The following options are recognized:

Place a read lock on the file. Multiple processes may be accessing the file with read-locks.
Place a write lock on the file. Only one process may be accessing a file if there is a write lock.
If specified, then the process will not block if the lock cannot be obtained. With this option, the command returns 1 if the lock is obtained and 0 if it is not.

See your system's fcntl system call documentation for full details of the behavior of file locking. If locking is being done on ranges of a file, it is best to use unbuffered file access (see the fcntl command).

The flock command is not available on Windows 95. It is available on Windows NT.

... there is a proposal tclx file commands for core

dbohdan 2015-09-21: You can find an example of flock in use here: http://www.ucolick.org/~de/book/file.html .