---
name: "setlock"
section: "8"
platform: "linux"
package: "daemontools"
version: "1:0.76-14"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/setlock"
---

# setlock(8)

runs another program with a file locked.

## NAME

setlock - runs another program with a file locked.

## SYNOPSIS

**setlock** \[ **-nNxX** \] *fn* *child*

## DESCRIPTION

*fn* is a single argument. *child* consists of one or more arguments.

**setlock** opens *fn* for writing (creating it if it does not exist), obtains an exclusive lock on it, and runs *child*.

Normally the lock disappears when *child* exits.

Here's the complete story: *child* is given a descriptor for a locked ofile pointing to the disk file named *fn*. The lock disappears when this ofile is

- o

  closed by all the processes that have descriptors for it or

- o

  explicitly unlocked.

## OPTIONS

- **-n**

  No delay. If *fn* is locked by another process, **setlock** gives up.

- **-N**

  (Default.) Delay. If *fn* is locked by another process, **setlock** waits until it can obtain a new lock.

- **-x**

  If *fn* cannot be opened (or created) or locked, **setlock** exits zero.

- **-X**

  (Default.) If *fn* cannot be opened (or created) or locked, **setlock** prints an error message and exits nonzero.

## SEE ALSO

[supervise(8)](/supervise/8.md), [svc(8)](/svc/8.md), [svok(8)](/svok/8.md), [svstat(8)](/svstat/8.md), [svscanboot(8)](/svscanboot/8.md), [svscan(8)](/svscan/8.md), [readproctitle(8)](/readproctitle/8.md), [fghack(8)](/fghack/8.md),   [pgrphack(8)](/pgrphack/8.md), [multilog(8)](/multilog/8.md), [tai64n(8)](/tai64n/8.md), [tai64nlocal(8)](/tai64nlocal/8.md), [setuidgid(8)](/setuidgid/8.md), [envuidgid(8)](/envuidgid/8.md), [envdir(8)](/envdir/8.md), [softlimit(8)](/softlimit/8.md)

http://cr.yp.to/daemontools.html
