# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-06-01 05:45+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "close" msgstr "" #. type: TH #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "" #. type: TH #: archlinux debian-unstable #, no-wrap msgid "Linux man-pages 6.8" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "close - close a file descriptor" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIBRARY" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Standard C library (I, I<-lc>)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B<#include Eunistd.hE>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BIB<);>\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed msgid "" "B() closes a file descriptor, so that it no longer refers to any " "file and may be reused. Any record locks (see B(2)) held on the " "file it was associated with, and owned by the process, are removed " "regardless of the file descriptor that was used to obtain the lock. This " "has some unfortunate consequences and one should be extra careful when using " "advisory record locking. See B(2) for discussion of the risks and " "consequences as well as for the (probably preferred) open file description " "locks." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If I is the last file descriptor referring to the underlying open file " "description (see B(2)), the resources associated with the open file " "description are freed; if the file descriptor was the last reference to a " "file which has been removed using B(2), the file is deleted." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "RETURN VALUE" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() returns zero on success. On error, -1 is returned, and I " "is set to indicate the error." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ERRORS" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "I isn't a valid open file descriptor." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. Though, it's in doubt whether this error can ever occur; see #. https://lwn.net/Articles/576478/ "Returning EINTR from close()" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The B() call was interrupted by a signal; see B(7)." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "An I/O error occurred." msgstr "" #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On NFS, these errors are not normally reported against the first write which " "exceeds the available storage space, but instead against a subsequent " "B(2), B(2), or B()." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "See NOTES for a discussion of why B() should not be retried after an " "error." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "STANDARDS" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "POSIX.1-2008." msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. SVr4 documents an additional ENOLINK error condition. #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "POSIX.1-2001, SVr4, 4.3BSD." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NOTES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A successful close does not guarantee that the data has been successfully " "saved to disk, as the kernel uses the buffer cache to defer writes. " "Typically, filesystems do not flush buffers when a file is closed. If you " "need to be sure that the data is physically stored on the underlying disk, " "use B(2). (It will depend on the disk hardware at this point.)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The close-on-exec file descriptor flag can be used to ensure that a file " "descriptor is automatically closed upon a successful B(2); see " "B(2) for details." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Multithreaded processes and close()" msgstr "" #. #-#-#-#-# archlinux: close.2.pot (PACKAGE VERSION) #-#-#-#-# #. Date: Tue, 4 Sep 2007 13:57:35 +0200 #. From: Fredrik Noring #. One such race involves signals and ERESTARTSYS. If a file descriptor #. in use by a system call is closed and then reused by e.g. an #. independent open() in some unrelated thread, before the original system #. call has restarted after ERESTARTSYS, the original system call will #. later restart with the reused file descriptor. This is most likely a #. serious programming error. #. type: Plain text #. #-#-#-#-# debian-bookworm: close.2.pot (PACKAGE VERSION) #-#-#-#-# #. Date: Tue, 4 Sep 2007 13:57:35 +0200 #. From: Fredrik Noring #. One such race involves signals and ERESTARTSYS. If a file descriptor #. in use by a system call is closed and then reused by e.g. an #. independent open() in some unrelated thread, before the original system #. call has restarted after ERESTARTSYS, the original system call will #. later restart with the reused file descriptor. This is most likely a #. serious programming error. #. type: Plain text #. #-#-#-#-# debian-unstable: close.2.pot (PACKAGE VERSION) #-#-#-#-# #. Date: Tue, 4 Sep 2007 13:57:35 +0200 #. From: Fredrik Noring #. One such race involves signals and ERESTARTSYS. If a file descriptor #. in use by a system call is closed and then reused by e.g. an #. independent open() in some unrelated thread, before the original system #. call has restarted after ERESTARTSYS, the original system call will #. later restart with the reused file descriptor. This is most likely a #. serious programming error. #. type: Plain text #. #-#-#-#-# fedora-40: close.2.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# fedora-rawhide: close.2.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# mageia-cauldron: close.2.pot (PACKAGE VERSION) #-#-#-#-# #. Date: Tue, 4 Sep 2007 13:57:35 +0200 #. From: Fredrik Noring #. One such race involves signals and ERESTARTSYS. If a file descriptor #. in use by a system call is closed and then reused by e.g. an #. independent open() in some unrelated thread, before the original system #. call has restarted after ERESTARTSYS, the original system call will #. later restart with the reused file descriptor. This is most likely a #. serious programming error. #. type: Plain text #. #-#-#-#-# opensuse-leap-15-6: close.2.pot (PACKAGE VERSION) #-#-#-#-# #. Date: Tue, 4 Sep 2007 13:57:35 +0200 #. From: Fredrik Noring #. One such race involves signals and ERESTARTSYS. If a file descriptor #. in use by a system call is closed and then reused by e.g. an #. independent open() in some unrelated thread, before the original system #. call has restarted after ERESTARTSYS, the original system call will #. later restart with the reused file descriptor. This is most likely a #. serious programming error. #. type: Plain text #. #-#-#-#-# opensuse-tumbleweed: close.2.pot (PACKAGE VERSION) #-#-#-#-# #. Date: Tue, 4 Sep 2007 13:57:35 +0200 #. From: Fredrik Noring #. One such race involves signals and ERESTARTSYS. If a file descriptor #. in use by a system call is closed and then reused by e.g. an #. independent open() in some unrelated thread, before the original system #. call has restarted after ERESTARTSYS, the original system call will #. later restart with the reused file descriptor. This is most likely a #. serious programming error. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "It is probably unwise to close file descriptors while they may be in use by " "system calls in other threads in the same process. Since a file descriptor " "may be reused, there are some obscure race conditions that may cause " "unintended side effects." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Furthermore, consider the following scenario where two threads are " "performing operations on the same file descriptor:" msgstr "" #. type: IP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "(1)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "One thread is blocked in an I/O system call on the file descriptor. For " "example, it is trying to B(2) to a pipe that is already full, or " "trying to B(2) from a stream socket which currently has no available " "data." msgstr "" #. type: IP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "(2)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Another thread closes the file descriptor." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The behavior in this situation varies across systems. On some systems, when " "the file descriptor is closed, the blocking system call returns immediately " "with an error." msgstr "" #. 'struct file' in kernel-speak #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On Linux (and possibly some other systems), the behavior is different: the " "blocking I/O system call holds a reference to the underlying open file " "description, and this reference keeps the description open until the I/O " "system call completes. (See B(2) for a discussion of open file " "descriptions.) Thus, the blocking system call in the first thread may " "successfully complete after the B() in the second thread." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Dealing with error returns from close()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A careful programmer will check the return value of B(), since it is " "quite possible that errors on a previous B(2) operation are reported " "only on the final B() that releases the open file description. " "Failing to check the return value when closing a file may lead to I " "loss of data. This can especially be observed with NFS and with disk quota." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Note, however, that a failure return should be used only for diagnostic " "purposes (i.e., a warning to the application that there may still be I/O " "pending or there may have been failed I/O) or remedial purposes (e.g., " "writing the file once more or creating a backup)." msgstr "" # #. The file descriptor is released early in close(); #. close() ==> __close_fd(): #. __put_unused_fd() ==> __clear_open_fd() #. return filp_close(file, files); #. The errors are returned by filp_close() after the FD has been #. cleared for re-use. #. filp_close() #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Retrying the B() after a failure return is the wrong thing to do, " "since this may cause a reused file descriptor from another thread to be " "closed. This can occur because the Linux kernel I releases the file " "descriptor early in the close operation, freeing it for reuse; the steps " "that may return an error, such as flushing data to the filesystem or device, " "occur only later in the close operation." msgstr "" #. FreeBSD documents this explicitly. From the look of the source code #. SVR4, ancient SunOS, later Solaris, and AIX all do this. #. Issue 8 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Many other implementations similarly always close the file descriptor " "(except in the case of B, meaning that the file descriptor was " "invalid) even if they subsequently report an error on return from " "B(). POSIX.1 is currently silent on this point, but there are plans " "to mandate this behavior in the next major release of the standard." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A careful programmer who wants to know about I/O errors may precede " "B() with a call to B(2)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B error is a somewhat special case. Regarding the B " "error, POSIX.1-2008 says:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If B() is interrupted by a signal that is to be caught, it shall " "return -1 with I set to B and the state of I is " "unspecified." msgstr "" # #. FIXME . for later review when Issue 8 is one day released... #. POSIX proposes further changes for EINTR #. http://austingroupbugs.net/tag_view_page.php?tag_id=8 #. http://austingroupbugs.net/view.php?id=529 #. FIXME . #. Review the following glibc bug later #. https://sourceware.org/bugzilla/show_bug.cgi?id=14627 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This permits the behavior that occurs on Linux and many other " "implementations, where, as with other errors that may be reported by " "B(), the file descriptor is guaranteed to be closed. However, it " "also permits another possibility: that the implementation returns an " "B error and keeps the file descriptor open. (According to its " "documentation, HP-UX's B() does this.) The caller must then once " "more use B() to close the file descriptor, to avoid file descriptor " "leaks. This divergence in implementation behaviors provides a difficult " "hurdle for portable applications, since on many implementations, B() " "must not be called again after an B error, and on at least one, " "B() must be called again. There are plans to address this conundrum " "for the next major release of the POSIX.1 standard." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(2), B(2), B(2), B(2), B(2), " "B(2), B(3)" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "2022-10-30" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 msgid "" "B() closes a file descriptor, so that it no longer refers to any " "file and may be reused. Any record locks (see B(2)) held on the " "file it was associated with, and owned by the process, are removed " "(regardless of the file descriptor that was used to obtain the lock)." msgstr "" #. type: TP #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "B, B" msgstr "" #. SVr4 documents an additional ENOLINK error condition. #. type: Plain text #: debian-bookworm msgid "POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD." msgstr "" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "" #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "" #. Date: Tue, 4 Sep 2007 13:57:35 +0200 #. From: Fredrik Noring #. One such race involves signals and ERESTARTSYS. If a file descriptor #. in use by a system call is closed and then reused by e.g. an #. independent open() in some unrelated thread, before the original system #. call has restarted after ERESTARTSYS, the original system call will #. later restart with the reused file descriptor. This is most likely a #. serious programming error. #. type: Plain text #: fedora-40 fedora-rawhide msgid "" "When dealing with sockets, you have to be sure that there is no B(2) " "still blocking on it on another thread, otherwise it might block forever, " "since no more messages will be send via the socket. Be sure to use " "B(2) to shut down all parts the connection before closing the " "socket." msgstr "" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-03-30" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr "" #. type: TH #: opensuse-tumbleweed #, no-wrap msgid "Linux man-pages (unreleased)" msgstr ""