123456789101112131415161718192021222324252627282930313233343536373839 |
- /* flock.c - manage advisory file locks
- *
- * Copyright 2015 The Android Open Source Project
- USE_FLOCK(NEWTOY(flock, "<1>1nsux[-sux]", TOYFLAG_USR|TOYFLAG_BIN))
- config FLOCK
- bool "flock"
- default y
- help
- usage: flock [-sxun] fd
- Manage advisory file locks.
- -s Shared lock
- -x Exclusive lock (default)
- -u Unlock
- -n Non-blocking: fail rather than wait for the lock
- */
- #define FOR_flock
- #include "toys.h"
- #include <sys/file.h>
- void flock_main(void)
- {
- int fd = xstrtol(*toys.optargs, NULL, 10), op;
- if (toys.optflags & FLAG_u) op = LOCK_UN;
- else op = (toys.optflags & FLAG_s) ? LOCK_SH : LOCK_EX;
- if (toys.optflags & FLAG_n) op |= LOCK_NB;
- if (flock(fd, op)) {
- if ((op & LOCK_NB) && errno == EAGAIN) toys.exitval = 1;
- else perror_exit("flock");
- }
- }
|