On Tue, Jan 19, 2021 at 02:37:42PM +0900, Namhyung Kim wrote:

SNIP

> >
> > +static int check_lock(struct daemon *daemon)
> > +{
> > +       char path[PATH_MAX];
> > +       char buf[20];
> > +       int fd, pid;
> > +       ssize_t len;
> > +
> > +       scnprintf(path, sizeof(path), "%s/lock", daemon->base);
> > +
> > +       fd = open(path, O_RDWR|O_CREAT|O_CLOEXEC, 0640);
> > +       if (fd < 0)
> > +               return -1;
> > +
> > +       if (lockf(fd, F_TLOCK, 0) < 0) {
> > +               filename__read_int(path, &pid);
> > +               fprintf(stderr, "failed: another perf daemon (pid %d) owns 
> > %s\n",
> > +                       pid, daemon->base);
> > +               return -1;
> > +       }
> 
> So the fd is (a kind of) leaked and the lock is released only when
> the daemon is going to die, right?

yes, that's the idea, I'll put it in some comment

thanks,
jirka

Reply via email to