local p = require "posix"
local fd = p.creat("file.txt", "rw-r--r--")
-- Set lock on file
local lock = {
l_type = p.F_WRLCK; -- Exclusive lock
l_whence = p.SEEK_SET; -- Relative to beginning of file
l_start = 0; -- Start from 1st byte
l_len = 0; -- Lock whole file
}
local result = p.fcntl(fd, p.F_SETLK, lock)
if result == -1 then
error("file locked by another process")
end
-- Do something with file while it's locked
p.write(fd, "Lorem ipsum\n")
-- Release the lock
lock.l_type = p.F_UNLCK
p.fcntl(fd, p.F_SETLK, lock)