# 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-03-01 16:59+0100\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 "ioctl_ns" msgstr "" #. type: TH #: archlinux fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "" #. type: TH #: archlinux fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" 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 "ioctl_ns - ioctl() operations for Linux namespaces" 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: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Discovering namespace relationships" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The following B(2) operations are provided to allow discovery of " "namespace relationships (see B(7) and " "B(7)). The form of the calls is:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "new_fd = ioctl(fd, request);\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In each case, I refers to a IpidI file. Both operations " "return a new file descriptor on success." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.9)" msgstr "" #. commit bcac25a58bfc6bd79191ac5d7afb49bea96da8c9 #. commit 6786741dbf99e44fb0c0ed85a37582b8a26f1c3b #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Returns a file descriptor that refers to the owning user namespace for the " "namespace referred to by I." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.9)" msgstr "" #. commit a7306ed8d94af729ecef8b6e37506a1c6fc14788 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Returns a file descriptor that refers to the parent namespace of the " "namespace referred to by I. This operation is valid only for " "hierarchical namespaces (i.e., PID and user namespaces). For user " "namespaces, B is synonymous with B." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The new file descriptor returned by these operations is opened with the " "B and B (close-on-exec; see B(2)) flags." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "By applying B(2) to the returned file descriptor, one obtains a " "I structure whose I (resident device) and I (inode " "number) fields together identify the owning/parent namespace. This inode " "number can be matched with the inode number of another IpidI{I,I} file to determine whether that is the owning/parent " "namespace." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Either of these B(2) operations can fail with the following 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 "" "The requested namespace is outside of the caller's namespace scope. This " "error can occur if, for example, the owning user namespace is an ancestor of " "the caller's current user namespace. It can also occur on attempts to " "obtain the parent of the initial user or PID namespace." 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 "The operation is not supported by this kernel version." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Additionally, the B operation can fail with the following " "error:" 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 refers to a nonhierarchical namespace." msgstr "" #. ============================================================ #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "See the EXAMPLES section for an example of the use of these operations." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Discovering the namespace type" msgstr "" #. commit e5ff5ce6e20ee22511398bb31fb912466cf82a36 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B operation (available since Linux 4.11) can be used to " "discover the type of namespace referred to by the file descriptor I:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "nstype = ioctl(fd, NS_GET_NSTYPE);\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "I refers to a IpidI file." msgstr "" #. ============================================================ #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The return value is one of the B values that can be specified to " "B(2) or B(2) in order to create a namespace." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Discovering the owner of a user namespace" msgstr "" #. commit 015bb305b8ebe8d601a238ab70ebdc394c7a19ba #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B operation (available since Linux 4.11) can be used " "to discover the owner user ID of a user namespace (i.e., the effective user " "ID of the process that created the user namespace). The form of the call is:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "uid_t uid;\n" "ioctl(fd, NS_GET_OWNER_UID, &uid);\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "I refers to a IpidI file." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The owner user ID is returned in the I pointed to by the third " "argument." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "This operation can fail with the following error:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "I does not refer to a user namespace." 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: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Any of the above B() operations can return the following errors:" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "I does not refer to a IpidI* file." 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 "Linux." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The example shown below uses the B(2) operations described above to " "perform simple discovery of namespace relationships. The following shell " "sessions show various examples of the use of this program." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Trying to get the parent of the initial user namespace fails, since it has " "no parent:" 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<./ns_show /proc/self/ns/user p>\n" "The parent namespace is outside your namespace scope\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Create a process running B(1) that resides in new user and UTS " "namespaces, and show that the new UTS namespace is associated with the new " "user namespace:" 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\n" "[1] 23235\n" "$ B<./ns_show /proc/23235/ns/uts u>\n" "Device/Inode of owning user namespace is: [0,3] / 4026532448\n" "$ B\n" "user:[4026532448]\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Then show that the parent of the new user namespace in the preceding example " "is the initial user namespace:" 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\n" "user:[4026531837]\n" "$ B<./ns_show /proc/23235/ns/user p>\n" "Device/Inode of parent namespace is: [0,3] / 4026531837\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Start a shell in a new user namespace, and show that from within this shell, " "the parent user namespace can't be discovered. Similarly, the UTS namespace " "(which is associated with the initial user namespace) can't be discovered." 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\n" "sh2$ B<./ns_show /proc/self/ns/user p>\n" "The parent namespace is outside your namespace scope\n" "sh2$ B<./ns_show /proc/self/ns/uts u>\n" "The owning user namespace is outside your namespace scope\n" msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Program source" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "/* ns_show.c\n" "\\&\n" " Licensed under the GNU General Public License v2 or later.\n" "*/\n" "#include Eerrno.hE\n" "#include Efcntl.hE\n" "#include Elinux/nsfs.hE\n" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Estring.hE\n" "#include Esys/ioctl.hE\n" "#include Esys/stat.hE\n" "#include Esys/sysmacros.hE\n" "#include Eunistd.hE\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd, userns_fd, parent_fd;\n" " struct stat sb;\n" "\\&\n" " if (argc E 2) {\n" " fprintf(stderr, \"Usage: %s /proc/[pid]/ns/[file] [p|u]\\en\",\n" " argv[0]);\n" " fprintf(stderr, \"\\enDisplay the result of one or both \"\n" " \"of NS_GET_USERNS (u) or NS_GET_PARENT (p)\\en\"\n" " \"for the specified /proc/[pid]/ns/[file]. If neither \"\n" " \"\\[aq]p\\[aq] nor \\[aq]u\\[aq] is specified,\\en\"\n" " \"NS_GET_USERNS is the default.\\en\");\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " /* Obtain a file descriptor for the \\[aq]ns\\[aq] file specified\n" " in argv[1]. */\n" "\\&\n" " fd = open(argv[1], O_RDONLY);\n" " if (fd == -1) {\n" " perror(\"open\");\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " /* Obtain a file descriptor for the owning user namespace and\n" " then obtain and display the inode number of that namespace. */\n" "\\&\n" " if (argc E 3 || strchr(argv[2], \\[aq]u\\[aq])) {\n" " userns_fd = ioctl(fd, NS_GET_USERNS);\n" "\\&\n" " if (userns_fd == -1) {\n" " if (errno == EPERM)\n" " printf(\"The owning user namespace is outside \"\n" " \"your namespace scope\\en\");\n" " else\n" " perror(\"ioctl-NS_GET_USERNS\");\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " if (fstat(userns_fd, &sb) == -1) {\n" " perror(\"fstat-userns\");\n" " exit(EXIT_FAILURE);\n" " }\n" " printf(\"Device/Inode of owning user namespace is: \"\n" " \"[%x,%x] / %ju\\en\",\n" " major(sb.st_dev),\n" " minor(sb.st_dev),\n" " (uintmax_t) sb.st_ino);\n" "\\&\n" " close(userns_fd);\n" " }\n" "\\&\n" " /* Obtain a file descriptor for the parent namespace and\n" " then obtain and display the inode number of that namespace. */\n" "\\&\n" " if (argc E 2 && strchr(argv[2], \\[aq]p\\[aq])) {\n" " parent_fd = ioctl(fd, NS_GET_PARENT);\n" "\\&\n" " if (parent_fd == -1) {\n" " if (errno == EINVAL)\n" " printf(\"Can\\[aq] get parent namespace of a \"\n" " \"nonhierarchical namespace\\en\");\n" " else if (errno == EPERM)\n" " printf(\"The parent namespace is outside \"\n" " \"your namespace scope\\en\");\n" " else\n" " perror(\"ioctl-NS_GET_PARENT\");\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " if (fstat(parent_fd, &sb) == -1) {\n" " perror(\"fstat-parentns\");\n" " exit(EXIT_FAILURE);\n" " }\n" " printf(\"Device/Inode of parent namespace is: [%x,%x] / %ju\\en\",\n" " major(sb.st_dev),\n" " minor(sb.st_dev),\n" " (uintmax_t) sb.st_ino);\n" "\\&\n" " close(parent_fd);\n" " }\n" "\\&\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. SRC END #. 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(5), B(7)" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "2023-02-05" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "" #. type: Plain text #: debian-bookworm msgid "I does not refer to a I file." msgstr "" #. type: Plain text #: debian-bookworm msgid "" "Namespaces and the operations described on this page are a Linux-specific." msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "/* ns_show.c\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " Licensed under the GNU General Public License v2 or later.\n" "*/\n" "#include Eerrno.hE\n" "#include Efcntl.hE\n" "#include Elinux/nsfs.hE\n" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Estring.hE\n" "#include Esys/ioctl.hE\n" "#include Esys/stat.hE\n" "#include Esys/sysmacros.hE\n" "#include Eunistd.hE\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd, userns_fd, parent_fd;\n" " struct stat sb;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (argc E 2) {\n" " fprintf(stderr, \"Usage: %s /proc/[pid]/ns/[file] [p|u]\\en\",\n" " argv[0]);\n" " fprintf(stderr, \"\\enDisplay the result of one or both \"\n" " \"of NS_GET_USERNS (u) or NS_GET_PARENT (p)\\en\"\n" " \"for the specified /proc/[pid]/ns/[file]. If neither \"\n" " \"\\[aq]p\\[aq] nor \\[aq]u\\[aq] is specified,\\en\"\n" " \"NS_GET_USERNS is the default.\\en\");\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /* Obtain a file descriptor for the \\[aq]ns\\[aq] file specified\n" " in argv[1]. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " fd = open(argv[1], O_RDONLY);\n" " if (fd == -1) {\n" " perror(\"open\");\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /* Obtain a file descriptor for the owning user namespace and\n" " then obtain and display the inode number of that namespace. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (argc E 3 || strchr(argv[2], \\[aq]u\\[aq])) {\n" " userns_fd = ioctl(fd, NS_GET_USERNS);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (userns_fd == -1) {\n" " if (errno == EPERM)\n" " printf(\"The owning user namespace is outside \"\n" " \"your namespace scope\\en\");\n" " else\n" " perror(\"ioctl-NS_GET_USERNS\");\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (fstat(userns_fd, &sb) == -1) {\n" " perror(\"fstat-userns\");\n" " exit(EXIT_FAILURE);\n" " }\n" " printf(\"Device/Inode of owning user namespace is: \"\n" " \"[%x,%x] / %ju\\en\",\n" " major(sb.st_dev),\n" " minor(sb.st_dev),\n" " (uintmax_t) sb.st_ino);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " close(userns_fd);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /* Obtain a file descriptor for the parent namespace and\n" " then obtain and display the inode number of that namespace. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (argc E 2 && strchr(argv[2], \\[aq]p\\[aq])) {\n" " parent_fd = ioctl(fd, NS_GET_PARENT);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (parent_fd == -1) {\n" " if (errno == EINVAL)\n" " printf(\"Can\\[aq] get parent namespace of a \"\n" " \"nonhierarchical namespace\\en\");\n" " else if (errno == EPERM)\n" " printf(\"The parent namespace is outside \"\n" " \"your namespace scope\\en\");\n" " else\n" " perror(\"ioctl-NS_GET_PARENT\");\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (fstat(parent_fd, &sb) == -1) {\n" " perror(\"fstat-parentns\");\n" " exit(EXIT_FAILURE);\n" " }\n" " printf(\"Device/Inode of parent namespace is: [%x,%x] / %ju\\en\",\n" " major(sb.st_dev),\n" " minor(sb.st_dev),\n" " (uintmax_t) sb.st_ino);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " close(parent_fd);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: TH #: debian-unstable opensuse-tumbleweed #, no-wrap msgid "2023-05-03" msgstr "" #. type: TH #: debian-unstable opensuse-tumbleweed #, no-wrap msgid "Linux man-pages 6.05.01" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-04-03" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr ""