mirror of
https://github.com/python/cpython.git
synced 2025-11-03 03:22:27 +00:00
Issue #4761: Add the *at() family of functions (openat(), etc.) to the posix
module. Patch by Ross Lagerwall.
This commit is contained in:
parent
68e5c044e8
commit
f65132de3d
7 changed files with 1560 additions and 544 deletions
|
|
@ -606,6 +606,21 @@ associated with a :term:`file object` when required. Note that using the file
|
|||
descriptor directly will bypass the file object methods, ignoring aspects such
|
||||
as internal buffering of data.
|
||||
|
||||
.. data:: AT_SYMLINK_NOFOLLOW
|
||||
AT_EACCESS
|
||||
AT_FDCWD
|
||||
AT_REMOVEDIR
|
||||
AT_SYMLINK_FOLLOW
|
||||
UTIME_NOW
|
||||
UTIME_OMIT
|
||||
|
||||
These parameters are used as flags to the \*at family of functions.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: close(fd)
|
||||
|
||||
Close file descriptor *fd*.
|
||||
|
|
@ -654,6 +669,19 @@ as internal buffering of data.
|
|||
Availability: Unix, Windows.
|
||||
|
||||
|
||||
.. function:: faccessat(dirfd, path, mode, flags=0)
|
||||
|
||||
Like :func:`access` but if *path* is relative, it is taken as relative to *dirfd*.
|
||||
*flags* is optional and can be constructed by ORing together zero or more
|
||||
of these values: :data:`AT_SYMLINK_NOFOLLOW`, :data:`AT_EACCESS`.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: fchmod(fd, mode)
|
||||
|
||||
Change the mode of the file given by *fd* to the numeric *mode*. See the docs
|
||||
|
|
@ -662,6 +690,18 @@ as internal buffering of data.
|
|||
Availability: Unix.
|
||||
|
||||
|
||||
.. function:: fchmodat(dirfd, path, mode, flags=0)
|
||||
|
||||
Like :func:`chmod` but if *path* is relative, it is taken as relative to *dirfd*.
|
||||
*flags* is optional and may be 0 or :data:`AT_SYMLINK_NOFOLLOW`.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: fchown(fd, uid, gid)
|
||||
|
||||
Change the owner and group id of the file given by *fd* to the numeric *uid*
|
||||
|
|
@ -670,6 +710,18 @@ as internal buffering of data.
|
|||
Availability: Unix.
|
||||
|
||||
|
||||
.. function:: fchownat(dirfd, path, uid, gid, flags=0)
|
||||
|
||||
Like :func:`chown` but if *path* is relative, it is taken as relative to *dirfd*.
|
||||
*flags* is optional and may be 0 or :data:`AT_SYMLINK_NOFOLLOW`.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: fdatasync(fd)
|
||||
|
||||
Force write of file with filedescriptor *fd* to disk. Does not force update of
|
||||
|
|
@ -705,6 +757,17 @@ as internal buffering of data.
|
|||
|
||||
Availability: Unix, Windows.
|
||||
|
||||
.. function:: fstatat(dirfd, path, flags=0)
|
||||
|
||||
Like :func:`stat` but if *path* is relative, it is taken as relative to *dirfd*.
|
||||
*flags* is optional and may be 0 or :data:`AT_SYMLINK_NOFOLLOW`.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: fstatvfs(fd)
|
||||
|
||||
|
|
@ -734,6 +797,18 @@ as internal buffering of data.
|
|||
Availability: Unix.
|
||||
|
||||
|
||||
.. function:: futimesat(dirfd, path, (atime, mtime))
|
||||
futimesat(dirfd, path, None)
|
||||
|
||||
Like :func:`utime` but if *path* is relative, it is taken as relative to *dirfd*.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: isatty(fd)
|
||||
|
||||
Return ``True`` if the file descriptor *fd* is open and connected to a
|
||||
|
|
@ -742,6 +817,20 @@ as internal buffering of data.
|
|||
Availability: Unix.
|
||||
|
||||
|
||||
.. function:: linkat(srcfd, srcpath, dstfd, dstpath, flags=0)
|
||||
|
||||
Like :func:`link` but if *srcpath* is relative, it is taken as relative to *srcfd*
|
||||
and if *dstpath* is relative, it is taken as relative to *dstfd*.
|
||||
*flags* is optional and may be 0 or :data:`AT_SYMLINK_FOLLOW`.
|
||||
If *srcpath* is relative and *srcfd* is the special value :data:`AT_FDCWD`, then
|
||||
*srcpath* is interpreted relative to the current working directory. This
|
||||
also applies for *dstpath*.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: lseek(fd, pos, how)
|
||||
|
||||
Set the current position of file descriptor *fd* to position *pos*, modified
|
||||
|
|
@ -761,6 +850,39 @@ as internal buffering of data.
|
|||
respectively. Availability: Windows, Unix.
|
||||
|
||||
|
||||
.. function:: mkdirat(dirfd, path, mode=0o777)
|
||||
|
||||
Like :func:`mkdir` but if *path* is relative, it is taken as relative to *dirfd*.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: mkfifoat(dirfd, path, mode=0o666)
|
||||
|
||||
Like :func:`mkfifo` but if *path* is relative, it is taken as relative to *dirfd*.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: mknodat(dirfd, path, mode=0o600, device=0)
|
||||
|
||||
Like :func:`mknod` but if *path* is relative, it is taken as relative to *dirfd*.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: open(file, flags[, mode])
|
||||
|
||||
Open the file *file* and set various flags according to *flags* and possibly
|
||||
|
|
@ -783,6 +905,17 @@ as internal buffering of data.
|
|||
wrap a file descriptor in a file object, use :func:`fdopen`.
|
||||
|
||||
|
||||
.. function:: openat(dirfd, path, flags, mode=0o777)
|
||||
|
||||
Like :func:`open` but if *path* is relative, it is taken as relative to *dirfd*.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: openpty()
|
||||
|
||||
.. index:: module: pty
|
||||
|
|
@ -860,6 +993,41 @@ as internal buffering of data.
|
|||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: readlinkat(dirfd, path)
|
||||
|
||||
Like :func:`readlink` but if *path* is relative, it is taken as relative to *dirfd*.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: renameat(olddirfd, oldpath, newdirfd, newpath)
|
||||
|
||||
Like :func:`rename` but if *oldpath* is relative, it is taken as relative to
|
||||
*olddirfd* and if *newpath* is relative, it is taken as relative to *newdirfd*.
|
||||
If *oldpath* is relative and *olddirfd* is the special value :data:`AT_FDCWD`, then
|
||||
*oldpath* is interpreted relative to the current working directory. This
|
||||
also applies for *newpath*.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: symlinkat(src, dstfd, dst)
|
||||
|
||||
Like :func:`symlink` but if *dst* is relative, it is taken as relative to *dstfd*.
|
||||
If *dst* is relative and *dstfd* is the special value :data:`AT_FDCWD`, then *dst*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: tcgetpgrp(fd)
|
||||
|
||||
Return the process group associated with the terminal given by *fd* (an open
|
||||
|
|
@ -885,6 +1053,38 @@ as internal buffering of data.
|
|||
Availability: Unix.
|
||||
|
||||
|
||||
.. function:: unlinkat(dirfd, path, flags=0)
|
||||
|
||||
Like :func:`unlink` but if *path* is relative, it is taken as relative to *dirfd*.
|
||||
*flags* is optional and may be 0 or :data:`AT_REMOVEDIR`. If :data:`AT_REMOVEDIR` is
|
||||
specified, :func:`unlinkat` behaves like :func:`rmdir`.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: utimensat(dirfd, path, (atime_sec, atime_nsec), (mtime_sec, mtime_nsec), flags)
|
||||
utimensat(dirfd, path, None, None, flags)
|
||||
|
||||
Updates the timestamps of a file with nanosecond precision.
|
||||
The second form sets *atime* and *mtime* to the current time.
|
||||
If *atime_nsec* or *mtime_nsec* is specified as :data:`UTIME_NOW`, the corresponding
|
||||
timestamp is updated to the current time.
|
||||
If *atime_nsec* or *mtime_nsec* is specified as :data:`UTIME_OMIT`, the corresponding
|
||||
timestamp is not updated.
|
||||
If *path* is relative, it is taken as relative to *dirfd*.
|
||||
*flags* is optional and may be 0 or :data:`AT_SYMLINK_NOFOLLOW`.
|
||||
If *path* is relative and *dirfd* is the special value :data:`AT_FDCWD`, then *path*
|
||||
is interpreted relative to the current working directory.
|
||||
|
||||
Availability: Unix.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: write(fd, str)
|
||||
|
||||
Write the bytestring in *str* to file descriptor *fd*. Return the number of
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue