NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

procfs difference between NetBSD and Linux

The below program demonstrates a difference between /proc on NetBSD and Linux.

If run in a directory with a writable "foo.txt" then on Linux the second openat() succeeds but on NetBSD it fails (EEXIST). This behavior difference breaks the latest samba (4.14.x) on NetBSD.

Can this be fixed?


#include <fcntl.h>
#include <stdio.h>
#include <limits.h>
#include <unistd.h>

int main ()
  int fd, new_fd;
  char buf[PATH_MAX];

  fd = openat (AT_FDCWD, "foo.txt",  O_RDONLY|O_NOFOLLOW);
  printf ("fd = %d\n", fd);
  sprintf(buf, "/proc/self/fd/%d", fd);
  new_fd = openat(AT_FDCWD, buf, O_RDWR|O_CREAT|O_NONBLOCK, 0744);
  printf ("new_fd = %d\n", new_fd);
  sleep (20);

Home | Main Index | Thread Index | Old Index