I'm currently debugging a problem where a logger stays around even after the sheep was killed. Lock access to the log file to make debugging cases like this easier. Signed-off-by: Christoph Hellwig <hch at lst.de> diff --git a/lib/logger.c b/lib/logger.c index 5bce85c..b15ecc5 100644 --- a/lib/logger.c +++ b/lib/logger.c @@ -424,6 +424,18 @@ notrace int log_init(char *program_name, int size, int to_stdout, int level, syslog(LOG_ERR, "failed to open %s\n", outfile); return 1; } + + if (lockf(fd, F_TLOCK, 1) < 0) { + if (errno == EACCES || errno == EAGAIN) { + eprintf("another sheep daemon " + "is using %s\n", outfile); + } else { + eprintf("unable to get a lock " + "on the log file %s (%s)\n", + outfile, strerror(errno)); + } + return 1; + } } else { fd = -1; openlog(log_name, LOG_CONS | LOG_PID, LOG_DAEMON); |