첫 번째로 후자가 시스템 호출과 라이브러리 기능을 다르기 때문에 Posix를 잘못 언급했을 가능성이 있습니다. futimes()를 라이브러리 호출에 사용하는 것은 Linux에만 해당됩니다.
/* Change the access time of the file associated with FD to TVP[0] and
the modification time of FILE to TVP[1].
Starting with 2.6.22 the Linux kernel has the utimensat syscall which
can be used to implement futimes. Earlier kernels have no futimes()
syscall so we use the /proc filesystem. */
그래서,이 기준 모두를위한 하나로서 지정된 기술자 utimensat()를 사용하여 수행됩니다 * : glibc는 (파일 sysdeps/유닉스/SYSV/리눅스/futimes.c)에서, 주석이 at() 호출. 이전에는/proc/$ {pid}/fd/$ {fd} 경로에 utimes()를 사용하여 작업했습니다 (/ proc가 마운트 된 경우에만 너무 번거롭고). 이는 두 번째 질문에 대한 답입니다. 일반적으로 설명자에서 파일 이름을 감지 할 수는 없지만 별도로 파일에 액세스 할 수 있습니다. (BTW, 리눅스 프로세스의 경우/proc/$ pid/{cwd, exe}를 보면 파일을 여는 데 사용되는 초기 경로가 때때로 저장됩니다.)
FreeBSD는 명시적인 futimes()와 futimesat) syscalls (하지만 나는 왜 후자의 이름이 "utimesat"이 아닌지 궁금해한다).