2499 lines
71 KiB
Diff
2499 lines
71 KiB
Diff
From 1cb64d264cb92d55cfa2b6d3ea5ebc1adca7444f Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Nikola=20Forr=C3=B3?= <nforro@redhat.com>
|
|
Date: Fri, 27 Jul 2018 17:27:24 +0200
|
|
Subject: [PATCH 5/5] remove syscalls deprecated on aarch64
|
|
|
|
---
|
|
man2/_sysctl.2 | 1 -
|
|
man2/access.2 | 5 +
|
|
man2/alarm.2 | 105 --------------
|
|
man2/bdflush.2 | 133 -----------------
|
|
man2/chmod.2 | 5 +
|
|
man2/chown.2 | 7 +
|
|
man2/clone.2 | 21 +++
|
|
man2/dup.2 | 7 +
|
|
man2/epoll_create.2 | 5 +
|
|
man2/epoll_wait.2 | 5 +
|
|
man2/eventfd.2 | 5 +
|
|
man2/fork.2 | 337 ------------------------------------------
|
|
man2/futimesat.2 | 142 ------------------
|
|
man2/getdents.2 | 7 +
|
|
man2/inotify_init.2 | 5 +
|
|
man2/link.2 | 5 +
|
|
man2/mkdir.2 | 5 +
|
|
man2/mknod.2 | 5 +
|
|
man2/open.2 | 7 +
|
|
man2/pause.2 | 72 ---------
|
|
man2/pipe.2 | 5 +
|
|
man2/poll.2 | 5 +
|
|
man2/readlink.2 | 5 +
|
|
man2/recv.2 | 7 +
|
|
man2/rename.2 | 5 +
|
|
man2/rmdir.2 | 150 -------------------
|
|
man2/select.2 | 5 +
|
|
man2/send.2 | 7 +
|
|
man2/setpgid.2 | 5 +
|
|
man2/signalfd.2 | 5 +
|
|
man2/symlink.2 | 5 +
|
|
man2/sysctl.2 | 190 ------------------------
|
|
man2/time.2 | 140 ------------------
|
|
man2/umount.2 | 5 +
|
|
man2/unlink.2 | 5 +
|
|
man2/uselib.2 | 138 ------------------
|
|
man2/ustat.2 | 127 ----------------
|
|
man2/utime.2 | 9 +-
|
|
man2/vfork.2 | 346 --------------------------------------------
|
|
man2/wait4.2 | 7 +
|
|
40 files changed, 171 insertions(+), 1884 deletions(-)
|
|
delete mode 100644 man2/_sysctl.2
|
|
delete mode 100644 man2/alarm.2
|
|
delete mode 100644 man2/bdflush.2
|
|
delete mode 100644 man2/fork.2
|
|
delete mode 100644 man2/futimesat.2
|
|
delete mode 100644 man2/pause.2
|
|
delete mode 100644 man2/rmdir.2
|
|
delete mode 100644 man2/sysctl.2
|
|
delete mode 100644 man2/time.2
|
|
delete mode 100644 man2/uselib.2
|
|
delete mode 100644 man2/ustat.2
|
|
delete mode 100644 man2/vfork.2
|
|
|
|
diff --git a/man2/_sysctl.2 b/man2/_sysctl.2
|
|
deleted file mode 100644
|
|
index 9e14d4b..0000000
|
|
--- a/man2/_sysctl.2
|
|
+++ /dev/null
|
|
@@ -1 +0,0 @@
|
|
-.so man2/sysctl.2
|
|
diff --git a/man2/access.2 b/man2/access.2
|
|
index 2d194b5..9d8f444 100644
|
|
--- a/man2/access.2
|
|
+++ b/man2/access.2
|
|
@@ -76,6 +76,11 @@ _ATFILE_SOURCE
|
|
.PD
|
|
.SH DESCRIPTION
|
|
.BR access ()
|
|
+system call is DEPRECATED, use
|
|
+.BR faccessat ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR access ()
|
|
checks whether the calling process can access the file
|
|
.IR pathname .
|
|
If
|
|
diff --git a/man2/alarm.2 b/man2/alarm.2
|
|
deleted file mode 100644
|
|
index 43d7664..0000000
|
|
--- a/man2/alarm.2
|
|
+++ /dev/null
|
|
@@ -1,105 +0,0 @@
|
|
-.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
|
|
-.\" and Copyright (C) 1993 Michael Haardt, Ian Jackson.
|
|
-.\"
|
|
-.\" %%%LICENSE_START(VERBATIM)
|
|
-.\" Permission is granted to make and distribute verbatim copies of this
|
|
-.\" manual provided the copyright notice and this permission notice are
|
|
-.\" preserved on all copies.
|
|
-.\"
|
|
-.\" Permission is granted to copy and distribute modified versions of this
|
|
-.\" manual under the conditions for verbatim copying, provided that the
|
|
-.\" entire resulting derived work is distributed under the terms of a
|
|
-.\" permission notice identical to this one.
|
|
-.\"
|
|
-.\" Since the Linux kernel and libraries are constantly changing, this
|
|
-.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
-.\" responsibility for errors or omissions, or for damages resulting from
|
|
-.\" the use of the information contained herein. The author(s) may not
|
|
-.\" have taken the same level of care in the production of this manual,
|
|
-.\" which is licensed free of charge, as they might when working
|
|
-.\" professionally.
|
|
-.\"
|
|
-.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
-.\" the source, must acknowledge the copyright and authors of this work.
|
|
-.\" %%%LICENSE_END
|
|
-.\"
|
|
-.\" Modified Wed Jul 21 19:42:57 1993 by Rik Faith <faith@cs.unc.edu>
|
|
-.\" Modified Sun Jul 21 21:25:26 1996 by Andries Brouwer <aeb@cwi.nl>
|
|
-.\" Modified Wed Nov 6 03:46:05 1996 by Eric S. Raymond <esr@thyrsus.com>
|
|
-.\"
|
|
-.TH ALARM 2 2017-05-03 "Linux" "Linux Programmer's Manual"
|
|
-.SH NAME
|
|
-alarm \- set an alarm clock for delivery of a signal
|
|
-.SH SYNOPSIS
|
|
-.nf
|
|
-.B #include <unistd.h>
|
|
-.PP
|
|
-.BI "unsigned int alarm(unsigned int " seconds );
|
|
-.fi
|
|
-.SH DESCRIPTION
|
|
-.BR alarm ()
|
|
-arranges for a
|
|
-.B SIGALRM
|
|
-signal to be delivered to the calling process in
|
|
-.I seconds
|
|
-seconds.
|
|
-.PP
|
|
-If
|
|
-.I seconds
|
|
-is zero, any pending alarm is canceled.
|
|
-.PP
|
|
-In any event any previously set
|
|
-.BR alarm ()
|
|
-is canceled.
|
|
-.SH RETURN VALUE
|
|
-.BR alarm ()
|
|
-returns the number of seconds remaining until any previously scheduled
|
|
-alarm was due to be delivered, or zero if there was no previously
|
|
-scheduled alarm.
|
|
-.SH CONFORMING TO
|
|
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
|
|
-.SH NOTES
|
|
-.BR alarm ()
|
|
-and
|
|
-.BR setitimer (2)
|
|
-share the same timer; calls to one will interfere with use of the
|
|
-other.
|
|
-.PP
|
|
-Alarms created by
|
|
-.BR alarm ()
|
|
-are preserved across
|
|
-.BR execve (2)
|
|
-and are not inherited by children created via
|
|
-.BR fork (2).
|
|
-.PP
|
|
-.BR sleep (3)
|
|
-may be implemented using
|
|
-.BR SIGALRM ;
|
|
-mixing calls to
|
|
-.BR alarm ()
|
|
-and
|
|
-.BR sleep (3)
|
|
-is a bad idea.
|
|
-.PP
|
|
-Scheduling delays can, as ever, cause the execution of the process to
|
|
-be delayed by an arbitrary amount of time.
|
|
-.SH SEE ALSO
|
|
-.BR gettimeofday (2),
|
|
-.BR pause (2),
|
|
-.BR select (2),
|
|
-.BR setitimer (2),
|
|
-.BR sigaction (2),
|
|
-.BR signal (2),
|
|
-.BR timer_create (2),
|
|
-.BR timerfd_create (2),
|
|
-.BR sleep (3),
|
|
-.BR time (7)
|
|
-.SH COLOPHON
|
|
-This page is part of release 4.15 of the Linux
|
|
-.I man-pages
|
|
-project.
|
|
-A description of the project,
|
|
-information about reporting bugs,
|
|
-and the latest version of this page,
|
|
-can be found at
|
|
-\%https://www.kernel.org/doc/man\-pages/.
|
|
diff --git a/man2/bdflush.2 b/man2/bdflush.2
|
|
deleted file mode 100644
|
|
index ac0df3e..0000000
|
|
--- a/man2/bdflush.2
|
|
+++ /dev/null
|
|
@@ -1,133 +0,0 @@
|
|
-.\" Copyright (c) 1995 Michael Chastain (mec@shell.portal.com), 15 April 1995.
|
|
-.\"
|
|
-.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
|
|
-.\" This is free documentation; you can redistribute it and/or
|
|
-.\" modify it under the terms of the GNU General Public License as
|
|
-.\" published by the Free Software Foundation; either version 2 of
|
|
-.\" the License, or (at your option) any later version.
|
|
-.\"
|
|
-.\" The GNU General Public License's references to "object code"
|
|
-.\" and "executables" are to be interpreted as the output of any
|
|
-.\" document formatting or typesetting system, including
|
|
-.\" intermediate and printed output.
|
|
-.\"
|
|
-.\" This manual is distributed in the hope that it will be useful,
|
|
-.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
-.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
-.\" GNU General Public License for more details.
|
|
-.\"
|
|
-.\" You should have received a copy of the GNU General Public
|
|
-.\" License along with this manual; if not, see
|
|
-.\" <http://www.gnu.org/licenses/>.
|
|
-.\" %%%LICENSE_END
|
|
-.\"
|
|
-.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
|
|
-.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
|
|
-.\"
|
|
-.TH BDFLUSH 2 2016-10-08 "Linux" "Linux Programmer's Manual"
|
|
-.SH NAME
|
|
-bdflush \- start, flush, or tune buffer-dirty-flush daemon
|
|
-.SH SYNOPSIS
|
|
-.nf
|
|
-.B #include <sys/kdaemon.h>
|
|
-.PP
|
|
-.BI "int bdflush(int " func ", long *" address );
|
|
-.BI "int bdflush(int " func ", long " data );
|
|
-.fi
|
|
-.SH DESCRIPTION
|
|
-.IR Note :
|
|
-Since Linux 2.6,
|
|
-.\" As noted in a changes in the 2.5.12 source
|
|
-this system call is deprecated and does nothing.
|
|
-It is likely to disappear altogether in a future kernel release.
|
|
-Nowadays, the task performed by
|
|
-.BR bdflush ()
|
|
-is handled by the kernel
|
|
-.I pdflush
|
|
-thread.
|
|
-.PP
|
|
-.BR bdflush ()
|
|
-starts, flushes, or tunes the buffer-dirty-flush daemon.
|
|
-Only a privileged process (one with the
|
|
-.B CAP_SYS_ADMIN
|
|
-capability) may call
|
|
-.BR bdflush ().
|
|
-.PP
|
|
-If
|
|
-.I func
|
|
-is negative or 0, and no daemon has been started, then
|
|
-.BR bdflush ()
|
|
-enters the daemon code and never returns.
|
|
-.PP
|
|
-If
|
|
-.I func
|
|
-is 1,
|
|
-some dirty buffers are written to disk.
|
|
-.PP
|
|
-If
|
|
-.I func
|
|
-is 2 or more and is even (low bit is 0), then
|
|
-.I address
|
|
-is the address of a long word,
|
|
-and the tuning parameter numbered
|
|
-.RI "(" "func" "\-2)/2"
|
|
-is returned to the caller in that address.
|
|
-.PP
|
|
-If
|
|
-.I func
|
|
-is 3 or more and is odd (low bit is 1), then
|
|
-.I data
|
|
-is a long word,
|
|
-and the kernel sets tuning parameter numbered
|
|
-.RI "(" "func" "\-3)/2"
|
|
-to that value.
|
|
-.PP
|
|
-The set of parameters, their values, and their valid ranges
|
|
-are defined in the Linux kernel source file
|
|
-.IR fs/buffer.c .
|
|
-.SH RETURN VALUE
|
|
-If
|
|
-.I func
|
|
-is negative or 0 and the daemon successfully starts,
|
|
-.BR bdflush ()
|
|
-never returns.
|
|
-Otherwise, the return value is 0 on success and \-1 on failure, with
|
|
-.I errno
|
|
-set to indicate the error.
|
|
-.SH ERRORS
|
|
-.TP
|
|
-.B EBUSY
|
|
-An attempt was made to enter the daemon code after
|
|
-another process has already entered.
|
|
-.TP
|
|
-.B EFAULT
|
|
-.I address
|
|
-points outside your accessible address space.
|
|
-.TP
|
|
-.B EINVAL
|
|
-An attempt was made to read or write an invalid parameter number,
|
|
-or to write an invalid value to a parameter.
|
|
-.TP
|
|
-.B EPERM
|
|
-Caller does not have the
|
|
-.B CAP_SYS_ADMIN
|
|
-capability.
|
|
-.SH VERSIONS
|
|
-Since version 2.23, glibc no longer supports this obsolete system call.
|
|
-.SH CONFORMING TO
|
|
-.BR bdflush ()
|
|
-is Linux-specific and should not be used in programs
|
|
-intended to be portable.
|
|
-.SH SEE ALSO
|
|
-.BR sync (1),
|
|
-.BR fsync (2),
|
|
-.BR sync (2)
|
|
-.SH COLOPHON
|
|
-This page is part of release 4.15 of the Linux
|
|
-.I man-pages
|
|
-project.
|
|
-A description of the project,
|
|
-information about reporting bugs,
|
|
-and the latest version of this page,
|
|
-can be found at
|
|
-\%https://www.kernel.org/doc/man\-pages/.
|
|
diff --git a/man2/chmod.2 b/man2/chmod.2
|
|
index 5c55553..9637954 100644
|
|
--- a/man2/chmod.2
|
|
+++ b/man2/chmod.2
|
|
@@ -91,6 +91,11 @@ _ATFILE_SOURCE
|
|
.PD
|
|
.ad
|
|
.SH DESCRIPTION
|
|
+.BR chmod ()
|
|
+system call is DEPRECATED, use
|
|
+.BR fchmodat ()
|
|
+instead!!!
|
|
+.PP
|
|
The
|
|
.BR chmod ()
|
|
and
|
|
diff --git a/man2/chown.2 b/man2/chown.2
|
|
index ef358e0..b917e5c 100644
|
|
--- a/man2/chown.2
|
|
+++ b/man2/chown.2
|
|
@@ -83,6 +83,13 @@ _ATFILE_SOURCE
|
|
.ad
|
|
.PD
|
|
.SH DESCRIPTION
|
|
+.BR chown ()
|
|
+and
|
|
+.BR lchown ()
|
|
+system calls are DEPRECATED, use
|
|
+.BR fchownat ()
|
|
+instead!!!
|
|
+.PP
|
|
These system calls change the owner and group of a file.
|
|
The
|
|
.BR chown (),
|
|
diff --git a/man2/clone.2 b/man2/clone.2
|
|
index 20ead6d..62bb4e6 100644
|
|
--- a/man2/clone.2
|
|
+++ b/man2/clone.2
|
|
@@ -1206,6 +1206,27 @@ On i386,
|
|
.BR clone ()
|
|
should not be called through vsyscall, but directly through
|
|
.IR "int $0x80" .
|
|
+
|
|
+.BR clone()
|
|
+replaces
|
|
+.BR fork (2)
|
|
+and
|
|
+.BR vfork (2)
|
|
+system calls.
|
|
+A call to
|
|
+.BR fork (2)
|
|
+is equivalent to a call to
|
|
+.BR clone ()
|
|
+specifying
|
|
+.I flags
|
|
+as just SIGCHLD.
|
|
+A call to
|
|
+.BR vfork (2)
|
|
+is equivalent to calling
|
|
+.BR clone ()
|
|
+with
|
|
+.I flags
|
|
+specified as: CLONE_VM | CLONE_VFORK | SIGCHLD.
|
|
.SH BUGS
|
|
GNU C library versions 2.3.4 up to and including 2.24
|
|
contained a wrapper function for
|
|
diff --git a/man2/dup.2 b/man2/dup.2
|
|
index 1829b5e..6782677 100644
|
|
--- a/man2/dup.2
|
|
+++ b/man2/dup.2
|
|
@@ -51,6 +51,13 @@ dup, dup2, dup3 \- duplicate a file descriptor
|
|
.BI "int dup3(int " oldfd ", int " newfd ", int " flags );
|
|
.fi
|
|
.SH DESCRIPTION
|
|
+.BR dup2 ()
|
|
+system call is DEPRECATED, use
|
|
+.BR dup3 ()
|
|
+with
|
|
+.I flags
|
|
+set to 0 instead!!!
|
|
+.PP
|
|
The
|
|
.BR dup ()
|
|
system call creates a copy of the file descriptor
|
|
diff --git a/man2/epoll_create.2 b/man2/epoll_create.2
|
|
index 2bc253d..64143d6 100644
|
|
--- a/man2/epoll_create.2
|
|
+++ b/man2/epoll_create.2
|
|
@@ -33,6 +33,11 @@ epoll_create, epoll_create1 \- open an epoll file descriptor
|
|
.fi
|
|
.SH DESCRIPTION
|
|
.BR epoll_create ()
|
|
+system call is DEPRECATED, use
|
|
+.BR epoll_create1 ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR epoll_create ()
|
|
creates a new
|
|
.BR epoll (7)
|
|
instance.
|
|
diff --git a/man2/epoll_wait.2 b/man2/epoll_wait.2
|
|
index 5edf20e..c3793ef 100644
|
|
--- a/man2/epoll_wait.2
|
|
+++ b/man2/epoll_wait.2
|
|
@@ -33,6 +33,11 @@ epoll_wait, epoll_pwait \- wait for an I/O event on an epoll file descriptor
|
|
.BI " const sigset_t *" sigmask );
|
|
.fi
|
|
.SH DESCRIPTION
|
|
+.BR epoll_wait ()
|
|
+system call is DEPRECATED, use
|
|
+.BR epoll_pwait ()
|
|
+instead!!!
|
|
+.PP
|
|
The
|
|
.BR epoll_wait ()
|
|
system call waits for events on the
|
|
diff --git a/man2/eventfd.2 b/man2/eventfd.2
|
|
index de2461f..0d06430 100644
|
|
--- a/man2/eventfd.2
|
|
+++ b/man2/eventfd.2
|
|
@@ -28,6 +28,11 @@ eventfd \- create a file descriptor for event notification
|
|
.BI "int eventfd(unsigned int " initval ", int " flags );
|
|
.SH DESCRIPTION
|
|
.BR eventfd ()
|
|
+system call is DEPRECATED, use
|
|
+.BR eventfd2 ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR eventfd ()
|
|
creates an "eventfd object" that can be used as
|
|
an event wait/notify mechanism by user-space applications,
|
|
and by the kernel to notify user-space applications of events.
|
|
diff --git a/man2/fork.2 b/man2/fork.2
|
|
deleted file mode 100644
|
|
index c217a3a..0000000
|
|
--- a/man2/fork.2
|
|
+++ /dev/null
|
|
@@ -1,337 +0,0 @@
|
|
-.\" Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
|
|
-.\" A few fragments remain from an earlier (1992) page by
|
|
-.\" Drew Eckhardt (drew@cs.colorado.edu),
|
|
-.\"
|
|
-.\" %%%LICENSE_START(VERBATIM)
|
|
-.\" Permission is granted to make and distribute verbatim copies of this
|
|
-.\" manual provided the copyright notice and this permission notice are
|
|
-.\" preserved on all copies.
|
|
-.\"
|
|
-.\" Permission is granted to copy and distribute modified versions of this
|
|
-.\" manual under the conditions for verbatim copying, provided that the
|
|
-.\" entire resulting derived work is distributed under the terms of a
|
|
-.\" permission notice identical to this one.
|
|
-.\"
|
|
-.\" Since the Linux kernel and libraries are constantly changing, this
|
|
-.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
-.\" responsibility for errors or omissions, or for damages resulting from
|
|
-.\" the use of the information contained herein. The author(s) may not
|
|
-.\" have taken the same level of care in the production of this manual,
|
|
-.\" which is licensed free of charge, as they might when working
|
|
-.\" professionally.
|
|
-.\"
|
|
-.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
-.\" the source, must acknowledge the copyright and authors of this work.
|
|
-.\" %%%LICENSE_END
|
|
-.\"
|
|
-.\" Modified by Michael Haardt (michael@moria.de)
|
|
-.\" Modified Sat Jul 24 13:22:07 1993 by Rik Faith (faith@cs.unc.edu)
|
|
-.\" Modified 21 Aug 1994 by Michael Chastain (mec@shell.portal.com):
|
|
-.\" Referenced 'clone(2)'.
|
|
-.\" Modified 1995-06-10, 1996-04-18, 1999-11-01, 2000-12-24
|
|
-.\" by Andries Brouwer (aeb@cwi.nl)
|
|
-.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
|
|
-.\" Added notes on capability requirements
|
|
-.\" 2006-09-04, Michael Kerrisk
|
|
-.\" Greatly expanded, to describe all attributes that differ
|
|
-.\" parent and child.
|
|
-.\"
|
|
-.TH FORK 2 2017-09-15 "Linux" "Linux Programmer's Manual"
|
|
-.SH NAME
|
|
-fork \- create a child process
|
|
-.SH SYNOPSIS
|
|
-.B #include <sys/types.h>
|
|
-.br
|
|
-.B #include <unistd.h>
|
|
-.PP
|
|
-.B pid_t fork(void);
|
|
-.SH DESCRIPTION
|
|
-.BR fork ()
|
|
-creates a new process by duplicating the calling process.
|
|
-The new process is referred to as the
|
|
-.I child
|
|
-process.
|
|
-The calling process is referred to as the
|
|
-.I parent
|
|
-process.
|
|
-.PP
|
|
-The child process and the parent process run in separate memory spaces.
|
|
-At the time of
|
|
-.BR fork ()
|
|
-both memory spaces have the same content.
|
|
-Memory writes, file mappings
|
|
-.RB ( mmap (2)),
|
|
-and unmappings
|
|
-.RB ( munmap (2))
|
|
-performed by one of the processes do not affect the other.
|
|
-.PP
|
|
-The child process is an exact duplicate of the parent
|
|
-process except for the following points:
|
|
-.IP * 3
|
|
-The child has its own unique process ID,
|
|
-and this PID does not match the ID of any existing process group
|
|
-.RB ( setpgid (2))
|
|
-or session.
|
|
-.IP *
|
|
-The child's parent process ID is the same as the parent's process ID.
|
|
-.IP *
|
|
-The child does not inherit its parent's memory locks
|
|
-.RB ( mlock (2),
|
|
-.BR mlockall (2)).
|
|
-.IP *
|
|
-Process resource utilizations
|
|
-.RB ( getrusage (2))
|
|
-and CPU time counters
|
|
-.RB ( times (2))
|
|
-are reset to zero in the child.
|
|
-.IP *
|
|
-The child's set of pending signals is initially empty
|
|
-.RB ( sigpending (2)).
|
|
-.IP *
|
|
-The child does not inherit semaphore adjustments from its parent
|
|
-.RB ( semop (2)).
|
|
-.IP *
|
|
-The child does not inherit process-associated record locks from its parent
|
|
-.RB ( fcntl (2)).
|
|
-(On the other hand, it does inherit
|
|
-.BR fcntl (2)
|
|
-open file description locks and
|
|
-.BR flock (2)
|
|
-locks from its parent.)
|
|
-.IP *
|
|
-The child does not inherit timers from its parent
|
|
-.RB ( setitimer (2),
|
|
-.BR alarm (2),
|
|
-.BR timer_create (2)).
|
|
-.IP *
|
|
-The child does not inherit outstanding asynchronous I/O operations
|
|
-from its parent
|
|
-.RB ( aio_read (3),
|
|
-.BR aio_write (3)),
|
|
-nor does it inherit any asynchronous I/O contexts from its parent (see
|
|
-.BR io_setup (2)).
|
|
-.PP
|
|
-The process attributes in the preceding list are all specified
|
|
-in POSIX.1.
|
|
-The parent and child also differ with respect to the following
|
|
-Linux-specific process attributes:
|
|
-.IP * 3
|
|
-The child does not inherit directory change notifications (dnotify)
|
|
-from its parent
|
|
-(see the description of
|
|
-.B F_NOTIFY
|
|
-in
|
|
-.BR fcntl (2)).
|
|
-.IP *
|
|
-The
|
|
-.BR prctl (2)
|
|
-.B PR_SET_PDEATHSIG
|
|
-setting is reset so that the child does not receive a signal
|
|
-when its parent terminates.
|
|
-.IP *
|
|
-The default timer slack value is set to the parent's
|
|
-current timer slack value.
|
|
-See the description of
|
|
-.BR PR_SET_TIMERSLACK
|
|
-in
|
|
-.BR prctl (2).
|
|
-.IP *
|
|
-Memory mappings that have been marked with the
|
|
-.BR madvise (2)
|
|
-.B MADV_DONTFORK
|
|
-flag are not inherited across a
|
|
-.BR fork ().
|
|
-.IP *
|
|
-Memory in address ranges that have been marked with the
|
|
-.BR madvise (2)
|
|
-.B MADV_WIPEONFORK
|
|
-flag is zeroed in the child after a
|
|
-.BR fork ().
|
|
-(The
|
|
-.B MADV_WIPEONFORK
|
|
-setting remains in place for those address ranges in the child.)
|
|
-.IP *
|
|
-The termination signal of the child is always
|
|
-.B SIGCHLD
|
|
-(see
|
|
-.BR clone (2)).
|
|
-.IP *
|
|
-The port access permission bits set by
|
|
-.BR ioperm (2)
|
|
-are not inherited by the child;
|
|
-the child must turn on any bits that it requires using
|
|
-.BR ioperm (2).
|
|
-.PP
|
|
-Note the following further points:
|
|
-.IP * 3
|
|
-The child process is created with a single thread\(emthe
|
|
-one that called
|
|
-.BR fork ().
|
|
-The entire virtual address space of the parent is replicated in the child,
|
|
-including the states of mutexes, condition variables,
|
|
-and other pthreads objects; the use of
|
|
-.BR pthread_atfork (3)
|
|
-may be helpful for dealing with problems that this can cause.
|
|
-.IP *
|
|
-After a
|
|
-.BR fork ()
|
|
-in a multithreaded program,
|
|
-the child can safely call only async-signal-safe functions (see
|
|
-.BR signal-safety (7))
|
|
-until such time as it calls
|
|
-.BR execve (2).
|
|
-.IP *
|
|
-The child inherits copies of the parent's set of open file descriptors.
|
|
-Each file descriptor in the child refers to the same
|
|
-open file description (see
|
|
-.BR open (2))
|
|
-as the corresponding file descriptor in the parent.
|
|
-This means that the two file descriptors share open file status flags,
|
|
-file offset,
|
|
-and signal-driven I/O attributes (see the description of
|
|
-.B F_SETOWN
|
|
-and
|
|
-.B F_SETSIG
|
|
-in
|
|
-.BR fcntl (2)).
|
|
-.IP *
|
|
-The child inherits copies of the parent's set of open message
|
|
-queue descriptors (see
|
|
-.BR mq_overview (7)).
|
|
-Each file descriptor in the child refers to the same
|
|
-open message queue description
|
|
-as the corresponding file descriptor in the parent.
|
|
-This means that the two file descriptors share the same flags
|
|
-.RI ( mq_flags ).
|
|
-.IP *
|
|
-The child inherits copies of the parent's set of open directory streams (see
|
|
-.BR opendir (3)).
|
|
-POSIX.1 says that the corresponding directory streams
|
|
-in the parent and child
|
|
-.I may
|
|
-share the directory stream positioning;
|
|
-on Linux/glibc they do not.
|
|
-.SH RETURN VALUE
|
|
-On success, the PID of the child process is returned in the parent,
|
|
-and 0 is returned in the child.
|
|
-On failure, \-1 is returned in the parent,
|
|
-no child process is created, and
|
|
-.I errno
|
|
-is set appropriately.
|
|
-.SH ERRORS
|
|
-.TP
|
|
-.B EAGAIN
|
|
-.\" NOTE! The following should match the description in pthread_create(3)
|
|
-A system-imposed limit on the number of threads was encountered.
|
|
-There are a number of limits that may trigger this error:
|
|
-.RS
|
|
-.IP * 3
|
|
-the
|
|
-.BR RLIMIT_NPROC
|
|
-soft resource limit (set via
|
|
-.BR setrlimit (2)),
|
|
-which limits the number of processes and threads for a real user ID,
|
|
-was reached;
|
|
-.IP *
|
|
-the kernel's system-wide limit on the number of processes and threads,
|
|
-.IR /proc/sys/kernel/threads-max ,
|
|
-was reached (see
|
|
-.BR proc (5));
|
|
-.IP *
|
|
-the maximum number of PIDs,
|
|
-.IR /proc/sys/kernel/pid_max ,
|
|
-was reached (see
|
|
-.BR proc (5));
|
|
-or
|
|
-.IP *
|
|
-the PID limit
|
|
-.RI ( pids.max )
|
|
-imposed by the cgroup "process number" (PIDs) controller was reached.
|
|
-.RE
|
|
-.TP
|
|
-.B EAGAIN
|
|
-The caller is operating under the
|
|
-.BR SCHED_DEADLINE
|
|
-scheduling policy and does not have the reset-on-fork flag set.
|
|
-See
|
|
-.BR sched (7).
|
|
-.TP
|
|
-.B ENOMEM
|
|
-.BR fork ()
|
|
-failed to allocate the necessary kernel structures because memory is tight.
|
|
-.TP
|
|
-.B ENOMEM
|
|
-An attempt was made to create a child process in a PID namespace
|
|
-whose "init" process has terminated.
|
|
-See
|
|
-.BR pid_namespaces (7).
|
|
-.TP
|
|
-.B ENOSYS
|
|
-.BR fork ()
|
|
-is not supported on this platform (for example,
|
|
-.\" e.g., arm (optionally), blackfin, c6x, frv, h8300, microblaze, xtensa
|
|
-hardware without a Memory-Management Unit).
|
|
-.TP
|
|
-.BR ERESTARTNOINTR " (since Linux 2.6.17)"
|
|
-.\" commit 4a2c7a7837da1b91468e50426066d988050e4d56
|
|
-System call was interrupted by a signal and will be restarted.
|
|
-(This can be seen only during a trace.)
|
|
-.SH CONFORMING TO
|
|
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
|
|
-.SH NOTES
|
|
-.PP
|
|
-Under Linux,
|
|
-.BR fork ()
|
|
-is implemented using copy-on-write pages, so the only penalty that it incurs
|
|
-is the time and memory required to duplicate the parent's page tables,
|
|
-and to create a unique task structure for the child.
|
|
-.SS C library/kernel differences
|
|
-Since version 2.3.3,
|
|
-.\" nptl/sysdeps/unix/sysv/linux/fork.c
|
|
-rather than invoking the kernel's
|
|
-.BR fork ()
|
|
-system call,
|
|
-the glibc
|
|
-.BR fork ()
|
|
-wrapper that is provided as part of the
|
|
-NPTL threading implementation invokes
|
|
-.BR clone (2)
|
|
-with flags that provide the same effect as the traditional system call.
|
|
-(A call to
|
|
-.BR fork ()
|
|
-is equivalent to a call to
|
|
-.BR clone (2)
|
|
-specifying
|
|
-.I flags
|
|
-as just
|
|
-.BR SIGCHLD .)
|
|
-The glibc wrapper invokes any fork handlers that have been
|
|
-established using
|
|
-.BR pthread_atfork (3).
|
|
-.\" and does some magic to ensure that getpid(2) returns the right value.
|
|
-.SH EXAMPLE
|
|
-See
|
|
-.BR pipe (2)
|
|
-and
|
|
-.BR wait (2).
|
|
-.SH SEE ALSO
|
|
-.BR clone (2),
|
|
-.BR execve (2),
|
|
-.BR exit (2),
|
|
-.BR setrlimit (2),
|
|
-.BR unshare (2),
|
|
-.BR vfork (2),
|
|
-.BR wait (2),
|
|
-.BR daemon (3),
|
|
-.BR pthread_atfork (3),
|
|
-.BR capabilities (7),
|
|
-.BR credentials (7)
|
|
-.SH COLOPHON
|
|
-This page is part of release 4.15 of the Linux
|
|
-.I man-pages
|
|
-project.
|
|
-A description of the project,
|
|
-information about reporting bugs,
|
|
-and the latest version of this page,
|
|
-can be found at
|
|
-\%https://www.kernel.org/doc/man\-pages/.
|
|
diff --git a/man2/futimesat.2 b/man2/futimesat.2
|
|
deleted file mode 100644
|
|
index 8991c98..0000000
|
|
--- a/man2/futimesat.2
|
|
+++ /dev/null
|
|
@@ -1,142 +0,0 @@
|
|
-.\" This manpage is Copyright (C) 2006, Michael Kerrisk
|
|
-.\"
|
|
-.\" %%%LICENSE_START(VERBATIM)
|
|
-.\" Permission is granted to make and distribute verbatim copies of this
|
|
-.\" manual provided the copyright notice and this permission notice are
|
|
-.\" preserved on all copies.
|
|
-.\"
|
|
-.\" Permission is granted to copy and distribute modified versions of this
|
|
-.\" manual under the conditions for verbatim copying, provided that the
|
|
-.\" entire resulting derived work is distributed under the terms of a
|
|
-.\" permission notice identical to this one.
|
|
-.\"
|
|
-.\" Since the Linux kernel and libraries are constantly changing, this
|
|
-.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
-.\" responsibility for errors or omissions, or for damages resulting from
|
|
-.\" the use of the information contained herein. The author(s) may not
|
|
-.\" have taken the same level of care in the production of this manual,
|
|
-.\" which is licensed free of charge, as they might when working
|
|
-.\" professionally.
|
|
-.\"
|
|
-.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
-.\" the source, must acknowledge the copyright and authors of this work.
|
|
-.\" %%%LICENSE_END
|
|
-.\"
|
|
-.TH FUTIMESAT 2 2017-09-15 "Linux" "Linux Programmer's Manual"
|
|
-.SH NAME
|
|
-futimesat \- change timestamps of a file relative to a \
|
|
-directory file descriptor
|
|
-.SH SYNOPSIS
|
|
-.nf
|
|
-.B #include <fcntl.h> /* Definition of AT_* constants */
|
|
-.B #include <sys/time.h>
|
|
-.PP
|
|
-.BI "int futimesat(int " dirfd ", const char *" pathname ,
|
|
-.BI " const struct timeval " times [2]);
|
|
-.fi
|
|
-.PP
|
|
-.in -4n
|
|
-Feature Test Macro Requirements for glibc (see
|
|
-.BR feature_test_macros (7)):
|
|
-.in
|
|
-.PP
|
|
-.BR futimesat ():
|
|
-_GNU_SOURCE
|
|
-.SH DESCRIPTION
|
|
-This system call is obsolete.
|
|
-Use
|
|
-.BR utimensat (2)
|
|
-instead.
|
|
-.PP
|
|
-The
|
|
-.BR futimesat ()
|
|
-system call operates in exactly the same way as
|
|
-.BR utimes (2),
|
|
-except for the differences described in this manual page.
|
|
-.PP
|
|
-If the pathname given in
|
|
-.I pathname
|
|
-is relative, then it is interpreted relative to the directory
|
|
-referred to by the file descriptor
|
|
-.I dirfd
|
|
-(rather than relative to the current working directory of
|
|
-the calling process, as is done by
|
|
-.BR utimes (2)
|
|
-for a relative pathname).
|
|
-.PP
|
|
-If
|
|
-.I pathname
|
|
-is relative and
|
|
-.I dirfd
|
|
-is the special value
|
|
-.BR AT_FDCWD ,
|
|
-then
|
|
-.I pathname
|
|
-is interpreted relative to the current working
|
|
-directory of the calling process (like
|
|
-.BR utimes (2)).
|
|
-.PP
|
|
-If
|
|
-.I pathname
|
|
-is absolute, then
|
|
-.I dirfd
|
|
-is ignored.
|
|
-.SH RETURN VALUE
|
|
-On success,
|
|
-.BR futimesat ()
|
|
-returns a 0.
|
|
-On error, \-1 is returned and
|
|
-.I errno
|
|
-is set to indicate the error.
|
|
-.SH ERRORS
|
|
-The same errors that occur for
|
|
-.BR utimes (2)
|
|
-can also occur for
|
|
-.BR futimesat ().
|
|
-The following additional errors can occur for
|
|
-.BR futimesat ():
|
|
-.TP
|
|
-.B EBADF
|
|
-.I dirfd
|
|
-is not a valid file descriptor.
|
|
-.TP
|
|
-.B ENOTDIR
|
|
-.I pathname
|
|
-is relative and
|
|
-.I dirfd
|
|
-is a file descriptor referring to a file other than a directory.
|
|
-.SH VERSIONS
|
|
-.BR futimesat ()
|
|
-was added to Linux in kernel 2.6.16;
|
|
-library support was added to glibc in version 2.4.
|
|
-.SH CONFORMING TO
|
|
-This system call is nonstandard.
|
|
-It was implemented from a specification that was proposed for POSIX.1,
|
|
-but that specification was replaced by the one for
|
|
-.BR utimensat (2).
|
|
-.PP
|
|
-A similar system call exists on Solaris.
|
|
-.SH NOTES
|
|
-.SS Glibc notes
|
|
-If
|
|
-.I pathname
|
|
-is NULL, then the glibc
|
|
-.BR futimesat ()
|
|
-wrapper function updates the times for the file referred to by
|
|
-.IR dirfd .
|
|
-.\" The Solaris futimesat() also has this strangeness.
|
|
-.SH SEE ALSO
|
|
-.BR stat (2),
|
|
-.BR utimensat (2),
|
|
-.BR utimes (2),
|
|
-.BR futimes (3),
|
|
-.BR path_resolution (7)
|
|
-.SH COLOPHON
|
|
-This page is part of release 4.15 of the Linux
|
|
-.I man-pages
|
|
-project.
|
|
-A description of the project,
|
|
-information about reporting bugs,
|
|
-and the latest version of this page,
|
|
-can be found at
|
|
-\%https://www.kernel.org/doc/man\-pages/.
|
|
diff --git a/man2/getdents.2 b/man2/getdents.2
|
|
index 73d57cc..0a650fe 100644
|
|
--- a/man2/getdents.2
|
|
+++ b/man2/getdents.2
|
|
@@ -42,6 +42,13 @@ getdents, getdents64 \- get directory entries
|
|
.IR Note :
|
|
There are no glibc wrappers for these system calls; see NOTES.
|
|
.SH DESCRIPTION
|
|
+.BR getdents ()
|
|
+system call is DEPRECATED, use
|
|
+.BR getdents64 ()
|
|
+or
|
|
+.BR readdir (3)
|
|
+instead!!!
|
|
+.PP
|
|
These are not the interfaces you are interested in.
|
|
Look at
|
|
.BR readdir (3)
|
|
diff --git a/man2/inotify_init.2 b/man2/inotify_init.2
|
|
index cf95d03..b55979e 100644
|
|
--- a/man2/inotify_init.2
|
|
+++ b/man2/inotify_init.2
|
|
@@ -41,6 +41,11 @@ For an overview of the inotify API, see
|
|
.BR inotify (7).
|
|
.PP
|
|
.BR inotify_init ()
|
|
+system call is DEPRECATED, use
|
|
+.BR inotify_init1 ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR inotify_init ()
|
|
initializes a new inotify instance and returns a file descriptor associated
|
|
with a new inotify event queue.
|
|
.PP
|
|
diff --git a/man2/link.2 b/man2/link.2
|
|
index 0742aed..442115c 100644
|
|
--- a/man2/link.2
|
|
+++ b/man2/link.2
|
|
@@ -65,6 +65,11 @@ _ATFILE_SOURCE
|
|
.PD
|
|
.SH DESCRIPTION
|
|
.BR link ()
|
|
+system call is DEPRECATED, use
|
|
+.BR linkat ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR link ()
|
|
creates a new link (also known as a hard link) to an existing file.
|
|
.PP
|
|
If
|
|
diff --git a/man2/mkdir.2 b/man2/mkdir.2
|
|
index 28839bd..9a2f151 100644
|
|
--- a/man2/mkdir.2
|
|
+++ b/man2/mkdir.2
|
|
@@ -45,6 +45,11 @@ _ATFILE_SOURCE
|
|
.PD
|
|
.SH DESCRIPTION
|
|
.BR mkdir ()
|
|
+system call is DEPRECATED, use
|
|
+.BR mkdirat ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR mkdir ()
|
|
attempts to create a directory named
|
|
.IR pathname .
|
|
.PP
|
|
diff --git a/man2/mknod.2 b/man2/mknod.2
|
|
index 82134da..49ef104 100644
|
|
--- a/man2/mknod.2
|
|
+++ b/man2/mknod.2
|
|
@@ -46,6 +46,11 @@ _XOPEN_SOURCE\ >=\ 500
|
|
.RE
|
|
.ad
|
|
.SH DESCRIPTION
|
|
+.BR mknod ()
|
|
+system call is DEPRECATED, use
|
|
+.BR mknodat ()
|
|
+instead!!!
|
|
+.PP
|
|
The system call
|
|
.BR mknod ()
|
|
creates a filesystem node (file, device special file, or
|
|
diff --git a/man2/open.2 b/man2/open.2
|
|
index 0f9a9e7..2eec9c6 100644
|
|
--- a/man2/open.2
|
|
+++ b/man2/open.2
|
|
@@ -86,6 +86,13 @@ _ATFILE_SOURCE
|
|
.ad
|
|
.PD
|
|
.SH DESCRIPTION
|
|
+.BR open ()
|
|
+and
|
|
+.BR creat ()
|
|
+system calls are DEPRECATED, use
|
|
+.BR openat ()
|
|
+instead!!!
|
|
+.PP
|
|
The
|
|
.BR open ()
|
|
system call opens the file specified by
|
|
diff --git a/man2/pause.2 b/man2/pause.2
|
|
deleted file mode 100644
|
|
index 1a3aa54..0000000
|
|
--- a/man2/pause.2
|
|
+++ /dev/null
|
|
@@ -1,72 +0,0 @@
|
|
-.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
|
|
-.\"
|
|
-.\" %%%LICENSE_START(VERBATIM)
|
|
-.\" Permission is granted to make and distribute verbatim copies of this
|
|
-.\" manual provided the copyright notice and this permission notice are
|
|
-.\" preserved on all copies.
|
|
-.\"
|
|
-.\" Permission is granted to copy and distribute modified versions of this
|
|
-.\" manual under the conditions for verbatim copying, provided that the
|
|
-.\" entire resulting derived work is distributed under the terms of a
|
|
-.\" permission notice identical to this one.
|
|
-.\"
|
|
-.\" Since the Linux kernel and libraries are constantly changing, this
|
|
-.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
-.\" responsibility for errors or omissions, or for damages resulting from
|
|
-.\" the use of the information contained herein. The author(s) may not
|
|
-.\" have taken the same level of care in the production of this manual,
|
|
-.\" which is licensed free of charge, as they might when working
|
|
-.\" professionally.
|
|
-.\"
|
|
-.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
-.\" the source, must acknowledge the copyright and authors of this work.
|
|
-.\" %%%LICENSE_END
|
|
-.\"
|
|
-.\" Modified by Michael Haardt (michael@moria.de)
|
|
-.\" Modified Sat Jul 24 14:48:00 1993 by Rik Faith (faith@cs.unc.edu)
|
|
-.\" Modified 1995 by Mike Battersby (mib@deakin.edu.au)
|
|
-.\" Modified 2000 by aeb, following Michael Kerrisk
|
|
-.\"
|
|
-.TH PAUSE 2 2015-08-08 "Linux" "Linux Programmer's Manual"
|
|
-.SH NAME
|
|
-pause \- wait for signal
|
|
-.SH SYNOPSIS
|
|
-.B #include <unistd.h>
|
|
-.PP
|
|
-.B int pause(void);
|
|
-.SH DESCRIPTION
|
|
-.BR pause ()
|
|
-causes the calling process (or thread) to sleep
|
|
-until a signal is delivered that either terminates the process or causes
|
|
-the invocation of a signal-catching function.
|
|
-.SH RETURN VALUE
|
|
-.BR pause ()
|
|
-returns only when a signal was caught and the
|
|
-signal-catching function returned.
|
|
-In this case,
|
|
-.BR pause ()
|
|
-returns \-1, and
|
|
-.I errno
|
|
-is set to
|
|
-.\" .BR ERESTARTNOHAND .
|
|
-.BR EINTR .
|
|
-.SH ERRORS
|
|
-.TP
|
|
-.B EINTR
|
|
-a signal was caught and the signal-catching function returned.
|
|
-.SH CONFORMING TO
|
|
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
|
|
-.SH SEE ALSO
|
|
-.BR kill (2),
|
|
-.BR select (2),
|
|
-.BR signal (2),
|
|
-.BR sigsuspend (2)
|
|
-.SH COLOPHON
|
|
-This page is part of release 4.15 of the Linux
|
|
-.I man-pages
|
|
-project.
|
|
-A description of the project,
|
|
-information about reporting bugs,
|
|
-and the latest version of this page,
|
|
-can be found at
|
|
-\%https://www.kernel.org/doc/man\-pages/.
|
|
diff --git a/man2/pipe.2 b/man2/pipe.2
|
|
index 1f2e565..baffbee 100644
|
|
--- a/man2/pipe.2
|
|
+++ b/man2/pipe.2
|
|
@@ -50,6 +50,11 @@ pipe, pipe2 \- create pipe
|
|
.fi
|
|
.SH DESCRIPTION
|
|
.BR pipe ()
|
|
+system call is DEPRECATED, use
|
|
+.BR pipe2 ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR pipe ()
|
|
creates a pipe, a unidirectional data channel that
|
|
can be used for interprocess communication.
|
|
The array
|
|
diff --git a/man2/poll.2 b/man2/poll.2
|
|
index ea4fed9..8c7fb37 100644
|
|
--- a/man2/poll.2
|
|
+++ b/man2/poll.2
|
|
@@ -46,6 +46,11 @@ poll, ppoll \- wait for some event on a file descriptor
|
|
.fi
|
|
.SH DESCRIPTION
|
|
.BR poll ()
|
|
+system call is DEPRECATED, use
|
|
+.BR ppoll ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR poll ()
|
|
performs a similar task to
|
|
.BR select (2):
|
|
it waits for one of a set of file descriptors to become ready
|
|
diff --git a/man2/readlink.2 b/man2/readlink.2
|
|
index 8a72a37..9b00999 100644
|
|
--- a/man2/readlink.2
|
|
+++ b/man2/readlink.2
|
|
@@ -86,6 +86,11 @@ _ATFILE_SOURCE
|
|
.PD
|
|
.SH DESCRIPTION
|
|
.BR readlink ()
|
|
+system call is DEPRECATED, use
|
|
+.BR readlinkat ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR readlink ()
|
|
places the contents of the symbolic link
|
|
.I pathname
|
|
in the buffer
|
|
diff --git a/man2/recv.2 b/man2/recv.2
|
|
index c6d4c86..3400ea7 100644
|
|
--- a/man2/recv.2
|
|
+++ b/man2/recv.2
|
|
@@ -57,6 +57,13 @@ recv, recvfrom, recvmsg \- receive a message from a socket
|
|
.BI "ssize_t recvmsg(int " sockfd ", struct msghdr *" msg ", int " flags );
|
|
.fi
|
|
.SH DESCRIPTION
|
|
+.BR recv ()
|
|
+system call is DEPRECATED, use
|
|
+.BR recvfrom ()
|
|
+with a NULL
|
|
+.I src_addr
|
|
+argument!
|
|
+.PP
|
|
The
|
|
.BR recv (),
|
|
.BR recvfrom (),
|
|
diff --git a/man2/rename.2 b/man2/rename.2
|
|
index f8b4991..457e081 100644
|
|
--- a/man2/rename.2
|
|
+++ b/man2/rename.2
|
|
@@ -76,6 +76,11 @@ _ATFILE_SOURCE
|
|
.PD
|
|
.SH DESCRIPTION
|
|
.BR rename ()
|
|
+system call is DEPRECATED, use
|
|
+.BR renameat ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR rename ()
|
|
renames a file, moving it between directories if required.
|
|
Any other hard links to the file (as created using
|
|
.BR link (2))
|
|
diff --git a/man2/rmdir.2 b/man2/rmdir.2
|
|
deleted file mode 100644
|
|
index 1eff7cd..0000000
|
|
--- a/man2/rmdir.2
|
|
+++ /dev/null
|
|
@@ -1,150 +0,0 @@
|
|
-.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
|
|
-.\" and Copyright (C) 1993 Michael Haardt, Ian Jackson.
|
|
-.\"
|
|
-.\" %%%LICENSE_START(VERBATIM)
|
|
-.\" Permission is granted to make and distribute verbatim copies of this
|
|
-.\" manual provided the copyright notice and this permission notice are
|
|
-.\" preserved on all copies.
|
|
-.\"
|
|
-.\" Permission is granted to copy and distribute modified versions of this
|
|
-.\" manual under the conditions for verbatim copying, provided that the
|
|
-.\" entire resulting derived work is distributed under the terms of a
|
|
-.\" permission notice identical to this one.
|
|
-.\"
|
|
-.\" Since the Linux kernel and libraries are constantly changing, this
|
|
-.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
-.\" responsibility for errors or omissions, or for damages resulting from
|
|
-.\" the use of the information contained herein. The author(s) may not
|
|
-.\" have taken the same level of care in the production of this manual,
|
|
-.\" which is licensed free of charge, as they might when working
|
|
-.\" professionally.
|
|
-.\"
|
|
-.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
-.\" the source, must acknowledge the copyright and authors of this work.
|
|
-.\" %%%LICENSE_END
|
|
-.\"
|
|
-.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
|
|
-.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
|
|
-.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
|
-.\"
|
|
-.TH RMDIR 2 2015-08-08 "Linux" "Linux Programmer's Manual"
|
|
-.SH NAME
|
|
-rmdir \- delete a directory
|
|
-.SH SYNOPSIS
|
|
-.B #include <unistd.h>
|
|
-.PP
|
|
-.BI "int rmdir(const char *" pathname );
|
|
-.SH DESCRIPTION
|
|
-.BR rmdir ()
|
|
-deletes a directory, which must be empty.
|
|
-.SH RETURN VALUE
|
|
-On success, zero is returned.
|
|
-On error, \-1 is returned, and
|
|
-.I errno
|
|
-is set appropriately.
|
|
-.SH ERRORS
|
|
-.TP
|
|
-.B EACCES
|
|
-Write access to the directory containing
|
|
-.I pathname
|
|
-was not allowed, or one of the directories in the path prefix of
|
|
-.I pathname
|
|
-did not allow search permission.
|
|
-(See also
|
|
-.BR path_resolution (7).
|
|
-.TP
|
|
-.B EBUSY
|
|
-.I pathname
|
|
-is currently in use by the system or some process that prevents its
|
|
-removal.
|
|
-On Linux, this means
|
|
-.I pathname
|
|
-is currently used as a mount point
|
|
-or is the root directory of the calling process.
|
|
-.TP
|
|
-.B EFAULT
|
|
-.IR pathname " points outside your accessible address space."
|
|
-.TP
|
|
-.B EINVAL
|
|
-.I pathname
|
|
-has
|
|
-.I .
|
|
-as last component.
|
|
-.TP
|
|
-.B ELOOP
|
|
-Too many symbolic links were encountered in resolving
|
|
-.IR pathname .
|
|
-.TP
|
|
-.B ENAMETOOLONG
|
|
-.IR pathname " was too long."
|
|
-.TP
|
|
-.B ENOENT
|
|
-A directory component in
|
|
-.I pathname
|
|
-does not exist or is a dangling symbolic link.
|
|
-.TP
|
|
-.B ENOMEM
|
|
-Insufficient kernel memory was available.
|
|
-.TP
|
|
-.B ENOTDIR
|
|
-.IR pathname ,
|
|
-or a component used as a directory in
|
|
-.IR pathname ,
|
|
-is not, in fact, a directory.
|
|
-.TP
|
|
-.B ENOTEMPTY
|
|
-.I pathname
|
|
-contains entries other than
|
|
-.IR . " and " .. " ;"
|
|
-or,
|
|
-.I pathname
|
|
-has
|
|
-.I ..
|
|
-as its final component.
|
|
-POSIX.1 also allows
|
|
-.\" POSIX.1-2001, POSIX.1-2008
|
|
-.B EEXIST
|
|
-for this condition.
|
|
-.TP
|
|
-.B EPERM
|
|
-The directory containing
|
|
-.I pathname
|
|
-has the sticky bit
|
|
-.RB ( S_ISVTX )
|
|
-set and the process's effective user ID is neither the user ID
|
|
-of the file to be deleted nor that of the directory containing it,
|
|
-and the process is not privileged (Linux: does not have the
|
|
-.B CAP_FOWNER
|
|
-capability).
|
|
-.TP
|
|
-.B EPERM
|
|
-The filesystem containing
|
|
-.I pathname
|
|
-does not support the removal of directories.
|
|
-.TP
|
|
-.B EROFS
|
|
-.I pathname
|
|
-refers to a directory on a read-only filesystem.
|
|
-.SH CONFORMING TO
|
|
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
|
|
-.SH BUGS
|
|
-Infelicities in the protocol underlying NFS can cause the unexpected
|
|
-disappearance of directories which are still being used.
|
|
-.SH SEE ALSO
|
|
-.BR rm (1),
|
|
-.BR rmdir (1),
|
|
-.BR chdir (2),
|
|
-.BR chmod (2),
|
|
-.BR mkdir (2),
|
|
-.BR rename (2),
|
|
-.BR unlink (2),
|
|
-.BR unlinkat (2)
|
|
-.SH COLOPHON
|
|
-This page is part of release 4.15 of the Linux
|
|
-.I man-pages
|
|
-project.
|
|
-A description of the project,
|
|
-information about reporting bugs,
|
|
-and the latest version of this page,
|
|
-can be found at
|
|
-\%https://www.kernel.org/doc/man\-pages/.
|
|
diff --git a/man2/select.2 b/man2/select.2
|
|
index c0a3a47..9fce598 100644
|
|
--- a/man2/select.2
|
|
+++ b/man2/select.2
|
|
@@ -73,6 +73,11 @@ Feature Test Macro Requirements for glibc (see
|
|
_POSIX_C_SOURCE\ >=\ 200112L
|
|
.SH DESCRIPTION
|
|
.BR select ()
|
|
+system call is DEPRECATED, use
|
|
+.BR pselect ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR select ()
|
|
and
|
|
.BR pselect ()
|
|
allow a program to monitor multiple file descriptors,
|
|
diff --git a/man2/send.2 b/man2/send.2
|
|
index e0bea6d..e5b4082 100644
|
|
--- a/man2/send.2
|
|
+++ b/man2/send.2
|
|
@@ -56,6 +56,13 @@ send, sendto, sendmsg \- send a message on a socket
|
|
", int " flags );
|
|
.fi
|
|
.SH DESCRIPTION
|
|
+.BR send ()
|
|
+system call is DEPRECATED, use
|
|
+.BR sendto ()
|
|
+with a NULL
|
|
+.I dest_addr
|
|
+instead!!!
|
|
+.PP
|
|
The system calls
|
|
.BR send (),
|
|
.BR sendto (),
|
|
diff --git a/man2/setpgid.2 b/man2/setpgid.2
|
|
index 6f6b337..3574aed 100644
|
|
--- a/man2/setpgid.2
|
|
+++ b/man2/setpgid.2
|
|
@@ -99,6 +99,11 @@ _XOPEN_SOURCE\ >=\ 500
|
|
.fi
|
|
.ad
|
|
.SH DESCRIPTION
|
|
+.BR getpgrp ()
|
|
+system call is DEPRECATED, use
|
|
+.BR getpgid ()
|
|
+instead!!!
|
|
+.PP
|
|
All of these interfaces are available on Linux,
|
|
and are used for getting and setting the
|
|
process group ID (PGID) of a process.
|
|
diff --git a/man2/signalfd.2 b/man2/signalfd.2
|
|
index 90e81ef..10ac204 100644
|
|
--- a/man2/signalfd.2
|
|
+++ b/man2/signalfd.2
|
|
@@ -26,6 +26,11 @@ signalfd \- create a file descriptor for accepting signals
|
|
.BI "int signalfd(int " fd ", const sigset_t *" mask ", int " flags );
|
|
.SH DESCRIPTION
|
|
.BR signalfd ()
|
|
+system call is DEPRECATED, use
|
|
+.BR signalfd4 ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR signalfd ()
|
|
creates a file descriptor that can be used to accept signals
|
|
targeted at the caller.
|
|
This provides an alternative to the use of a signal handler or
|
|
diff --git a/man2/symlink.2 b/man2/symlink.2
|
|
index ce0cbe7..78ad595 100644
|
|
--- a/man2/symlink.2
|
|
+++ b/man2/symlink.2
|
|
@@ -74,6 +74,11 @@ _ATFILE_SOURCE
|
|
.PD
|
|
.SH DESCRIPTION
|
|
.BR symlink ()
|
|
+system call is DEPRECATED, use
|
|
+.BR symlinkat ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR symlink ()
|
|
creates a symbolic link named
|
|
.I linkpath
|
|
which contains the string
|
|
diff --git a/man2/sysctl.2 b/man2/sysctl.2
|
|
deleted file mode 100644
|
|
index 849f1b5..0000000
|
|
--- a/man2/sysctl.2
|
|
+++ /dev/null
|
|
@@ -1,190 +0,0 @@
|
|
-.\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl)
|
|
-.\"
|
|
-.\" %%%LICENSE_START(VERBATIM)
|
|
-.\" Permission is granted to make and distribute verbatim copies of this
|
|
-.\" manual provided the copyright notice and this permission notice are
|
|
-.\" preserved on all copies.
|
|
-.\"
|
|
-.\" Permission is granted to copy and distribute modified versions of this
|
|
-.\" manual under the conditions for verbatim copying, provided that the
|
|
-.\" entire resulting derived work is distributed under the terms of a
|
|
-.\" permission notice identical to this one.
|
|
-.\"
|
|
-.\" Since the Linux kernel and libraries are constantly changing, this
|
|
-.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
-.\" responsibility for errors or omissions, or for damages resulting from
|
|
-.\" the use of the information contained herein. The author(s) may not
|
|
-.\" have taken the same level of care in the production of this manual,
|
|
-.\" which is licensed free of charge, as they might when working
|
|
-.\" professionally.
|
|
-.\"
|
|
-.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
-.\" the source, must acknowledge the copyright and authors of this work.
|
|
-.\" %%%LICENSE_END
|
|
-.\"
|
|
-.\" Written 11 April 1996 by Andries Brouwer <aeb@cwi.nl>
|
|
-.\" 960412: Added comments from Stephen Tweedie
|
|
-.\" Modified Tue Oct 22 22:28:41 1996 by Eric S. Raymond <esr@thyrsus.com>
|
|
-.\" Modified Mon Jan 5 20:31:04 1998 by aeb.
|
|
-.\"
|
|
-.TH SYSCTL 2 2017-09-15 "Linux" "Linux Programmer's Manual"
|
|
-.SH NAME
|
|
-sysctl \- read/write system parameters
|
|
-.SH SYNOPSIS
|
|
-.nf
|
|
-.B #include <unistd.h>
|
|
-.B #include <linux/sysctl.h>
|
|
-.PP
|
|
-.BI "int _sysctl(struct __sysctl_args *" args );
|
|
-.fi
|
|
-.PP
|
|
-.IR Note :
|
|
-There is no glibc wrapper for this system call; see NOTES.
|
|
-.SH DESCRIPTION
|
|
-.B Do not use this system call!
|
|
-See NOTES.
|
|
-.PP
|
|
-The
|
|
-.BR _sysctl ()
|
|
-call reads and/or writes kernel parameters.
|
|
-For example, the hostname,
|
|
-or the maximum number of open files.
|
|
-The argument has the form
|
|
-.PP
|
|
-.in +4n
|
|
-.EX
|
|
-struct __sysctl_args {
|
|
- int *name; /* integer vector describing variable */
|
|
- int nlen; /* length of this vector */
|
|
- void *oldval; /* 0 or address where to store old value */
|
|
- size_t *oldlenp; /* available room for old value,
|
|
- overwritten by actual size of old value */
|
|
- void *newval; /* 0 or address of new value */
|
|
- size_t newlen; /* size of new value */
|
|
-};
|
|
-.EE
|
|
-.in
|
|
-.PP
|
|
-This call does a search in a tree structure, possibly resembling
|
|
-a directory tree under
|
|
-.IR /proc/sys ,
|
|
-and if the requested item is found calls some appropriate routine
|
|
-to read or modify the value.
|
|
-.SH RETURN VALUE
|
|
-Upon successful completion,
|
|
-.BR _sysctl ()
|
|
-returns 0.
|
|
-Otherwise, a value of \-1 is returned and
|
|
-.I errno
|
|
-is set to indicate the error.
|
|
-.SH ERRORS
|
|
-.TP
|
|
-.BR EACCES ", " EPERM
|
|
-No search permission for one of the encountered "directories",
|
|
-or no read permission where
|
|
-.I oldval
|
|
-was nonzero, or no write permission where
|
|
-.I newval
|
|
-was nonzero.
|
|
-.TP
|
|
-.B EFAULT
|
|
-The invocation asked for the previous value by setting
|
|
-.I oldval
|
|
-non-NULL, but allowed zero room in
|
|
-.IR oldlenp .
|
|
-.TP
|
|
-.B ENOTDIR
|
|
-.I name
|
|
-was not found.
|
|
-.SH CONFORMING TO
|
|
-This call is Linux-specific, and should not be used in programs
|
|
-intended to be portable.
|
|
-A
|
|
-.BR sysctl ()
|
|
-call has been present in Linux since version 1.3.57.
|
|
-It originated in
|
|
-4.4BSD.
|
|
-Only Linux has the
|
|
-.I /proc/sys
|
|
-mirror, and the object naming schemes differ between Linux and 4.4BSD,
|
|
-but the declaration of the
|
|
-.BR sysctl ()
|
|
-function is the same in both.
|
|
-.SH NOTES
|
|
-Glibc does not provide a wrapper for this system call; call it using
|
|
-.BR syscall (2).
|
|
-Or rather...
|
|
-.I don't
|
|
-call it:
|
|
-use of this system call has long been discouraged,
|
|
-and it is so unloved that
|
|
-\fBit is likely to disappear in a future kernel version\fP.
|
|
-.\" See http://lwn.net/Articles/247243/
|
|
-Since Linux 2.6.24,
|
|
-uses of this system call result in warnings in the kernel log.
|
|
-.\" Though comments in suggest that it is needed by old glibc binaries,
|
|
-.\" so maybe it's not going away.
|
|
-Remove it from your programs now; use the
|
|
-.I /proc/sys
|
|
-interface instead.
|
|
-.PP
|
|
-This system call is available only if the kernel was configured with the
|
|
-.B CONFIG_SYSCTL_SYSCALL
|
|
-option.
|
|
-.SH BUGS
|
|
-The object names vary between kernel versions,
|
|
-making this system call worthless for applications.
|
|
-.PP
|
|
-Not all available objects are properly documented.
|
|
-.PP
|
|
-It is not yet possible to change operating system by writing to
|
|
-.IR /proc/sys/kernel/ostype .
|
|
-.SH EXAMPLE
|
|
-.EX
|
|
-#define _GNU_SOURCE
|
|
-#include <unistd.h>
|
|
-#include <sys/syscall.h>
|
|
-#include <string.h>
|
|
-#include <stdio.h>
|
|
-#include <stdlib.h>
|
|
-#include <linux/sysctl.h>
|
|
-
|
|
-int _sysctl(struct __sysctl_args *args );
|
|
-
|
|
-#define OSNAMESZ 100
|
|
-
|
|
-int
|
|
-main(void)
|
|
-{
|
|
- struct __sysctl_args args;
|
|
- char osname[OSNAMESZ];
|
|
- size_t osnamelth;
|
|
- int name[] = { CTL_KERN, KERN_OSTYPE };
|
|
-
|
|
- memset(&args, 0, sizeof(struct __sysctl_args));
|
|
- args.name = name;
|
|
- args.nlen = sizeof(name)/sizeof(name[0]);
|
|
- args.oldval = osname;
|
|
- args.oldlenp = &osnamelth;
|
|
-
|
|
- osnamelth = sizeof(osname);
|
|
-
|
|
- if (syscall(SYS__sysctl, &args) == \-1) {
|
|
- perror("_sysctl");
|
|
- exit(EXIT_FAILURE);
|
|
- }
|
|
- printf("This machine is running %*s\\n", osnamelth, osname);
|
|
- exit(EXIT_SUCCESS);
|
|
-}
|
|
-.EE
|
|
-.SH SEE ALSO
|
|
-.BR proc (5)
|
|
-.SH COLOPHON
|
|
-This page is part of release 4.15 of the Linux
|
|
-.I man-pages
|
|
-project.
|
|
-A description of the project,
|
|
-information about reporting bugs,
|
|
-and the latest version of this page,
|
|
-can be found at
|
|
-\%https://www.kernel.org/doc/man\-pages/.
|
|
diff --git a/man2/time.2 b/man2/time.2
|
|
deleted file mode 100644
|
|
index 00a9b4d..0000000
|
|
--- a/man2/time.2
|
|
+++ /dev/null
|
|
@@ -1,140 +0,0 @@
|
|
-.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
|
|
-.\"
|
|
-.\" %%%LICENSE_START(VERBATIM)
|
|
-.\" Permission is granted to make and distribute verbatim copies of this
|
|
-.\" manual provided the copyright notice and this permission notice are
|
|
-.\" preserved on all copies.
|
|
-.\"
|
|
-.\" Permission is granted to copy and distribute modified versions of this
|
|
-.\" manual under the conditions for verbatim copying, provided that the
|
|
-.\" entire resulting derived work is distributed under the terms of a
|
|
-.\" permission notice identical to this one.
|
|
-.\"
|
|
-.\" Since the Linux kernel and libraries are constantly changing, this
|
|
-.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
-.\" responsibility for errors or omissions, or for damages resulting from
|
|
-.\" the use of the information contained herein. The author(s) may not
|
|
-.\" have taken the same level of care in the production of this manual,
|
|
-.\" which is licensed free of charge, as they might when working
|
|
-.\" professionally.
|
|
-.\"
|
|
-.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
-.\" the source, must acknowledge the copyright and authors of this work.
|
|
-.\" %%%LICENSE_END
|
|
-.\"
|
|
-.\" Modified by Michael Haardt <michael@moria.de>
|
|
-.\" Modified Sat Jul 24 14:13:40 1993 by Rik Faith <faith@cs.unc.edu>
|
|
-.\" Additions by Joseph S. Myers <jsm28@cam.ac.uk>, 970909
|
|
-.\"
|
|
-.TH TIME 2 2017-09-15 "Linux" "Linux Programmer's Manual"
|
|
-.SH NAME
|
|
-time \- get time in seconds
|
|
-.SH SYNOPSIS
|
|
-.B #include <time.h>
|
|
-.PP
|
|
-.BI "time_t time(time_t *" tloc );
|
|
-.SH DESCRIPTION
|
|
-.BR time ()
|
|
-returns the time as the number of seconds since the
|
|
-Epoch, 1970-01-01 00:00:00 +0000 (UTC).
|
|
-.PP
|
|
-If
|
|
-.I tloc
|
|
-is non-NULL,
|
|
-the return value is also stored in the memory pointed to by
|
|
-.IR tloc .
|
|
-.SH RETURN VALUE
|
|
-On success, the value of time in seconds since the Epoch is returned.
|
|
-On error, \fI((time_t)\ \-1)\fP is returned, and \fIerrno\fP is set
|
|
-appropriately.
|
|
-.SH ERRORS
|
|
-.TP
|
|
-.B EFAULT
|
|
-.I tloc
|
|
-points outside your accessible address space (but see BUGS).
|
|
-.IP
|
|
-On systems where the C library
|
|
-.BR time ()
|
|
-wrapper function invokes an implementation provided by the
|
|
-.BR vdso (7)
|
|
-(so that there is no trap into the kernel),
|
|
-an invalid address may instead trigger a
|
|
-.B SIGSEGV
|
|
-signal.
|
|
-.SH CONFORMING TO
|
|
-SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
|
|
-.\" Under 4.3BSD, this call is obsoleted by
|
|
-.\" .BR gettimeofday (2).
|
|
-POSIX does not specify any error conditions.
|
|
-.SH NOTES
|
|
-POSIX.1 defines
|
|
-.I seconds since the Epoch
|
|
-using a formula that approximates the number of seconds between a
|
|
-specified time and the Epoch.
|
|
-This formula takes account of the facts that
|
|
-all years that are evenly divisible by 4 are leap years,
|
|
-but years that are evenly divisible by 100 are not leap years
|
|
-unless they are also evenly divisible by 400,
|
|
-in which case they are leap years.
|
|
-This value is not the same as the actual number of seconds between the time
|
|
-and the Epoch, because of leap seconds and because system clocks are not
|
|
-required to be synchronized to a standard reference.
|
|
-The intention is that the interpretation of seconds since the Epoch values be
|
|
-consistent; see POSIX.1-2008 Rationale A.4.15 for further rationale.
|
|
-.PP
|
|
-On Linux, a call to
|
|
-.BR time ()
|
|
-with
|
|
-.I tloc
|
|
-specified as NULL cannot fail with the error
|
|
-.BR EOVERFLOW ,
|
|
-even on ABIs where
|
|
-.I time_t
|
|
-is a signed 32-bit integer and the clock ticks past the time 2**31
|
|
-(2038-01-19 03:14:08 UTC, ignoring leap seconds).
|
|
-(POSIX.1 permits, but does not require, the
|
|
-.B EOVERFLOW
|
|
-error in the case where the seconds since the Epoch will not fit in
|
|
-.IR time_t .)
|
|
-Instead, the behavior on Linux is undefined when the system time is out of the
|
|
-.I time_t
|
|
-range.
|
|
-Applications intended to run after 2038 should use ABIs with
|
|
-.I time_t
|
|
-wider than 32 bits.
|
|
-.SH BUGS
|
|
-Error returns from this system call are indistinguishable from
|
|
-successful reports that the time is a few seconds
|
|
-.I before
|
|
-the Epoch, so the C library wrapper function never sets
|
|
-.I errno
|
|
-as a result of this call.
|
|
-.PP
|
|
-The
|
|
-.I tloc
|
|
-argument is obsolescent and should always be NULL in new code.
|
|
-When
|
|
-.I tloc
|
|
-is NULL, the call cannot fail.
|
|
-.\"
|
|
-.SS C library/kernel differences
|
|
-On some architectures, an implementation of
|
|
-.BR time ()
|
|
-is provided in the
|
|
-.BR vdso (7).
|
|
-.SH SEE ALSO
|
|
-.BR date (1),
|
|
-.BR gettimeofday (2),
|
|
-.BR ctime (3),
|
|
-.BR ftime (3),
|
|
-.BR time (7),
|
|
-.BR vdso (7)
|
|
-.SH COLOPHON
|
|
-This page is part of release 4.15 of the Linux
|
|
-.I man-pages
|
|
-project.
|
|
-A description of the project,
|
|
-information about reporting bugs,
|
|
-and the latest version of this page,
|
|
-can be found at
|
|
-\%https://www.kernel.org/doc/man\-pages/.
|
|
diff --git a/man2/umount.2 b/man2/umount.2
|
|
index 292076c..b43443a 100644
|
|
--- a/man2/umount.2
|
|
+++ b/man2/umount.2
|
|
@@ -40,6 +40,11 @@ umount, umount2 \- unmount filesystem
|
|
.fi
|
|
.SH DESCRIPTION
|
|
.BR umount ()
|
|
+system call is DEPRECATED, use
|
|
+.BR umount2 ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR umount ()
|
|
and
|
|
.BR umount2 ()
|
|
remove the attachment of the (topmost) filesystem mounted on
|
|
diff --git a/man2/unlink.2 b/man2/unlink.2
|
|
index b25b153..93bdb63 100644
|
|
--- a/man2/unlink.2
|
|
+++ b/man2/unlink.2
|
|
@@ -65,6 +65,11 @@ _ATFILE_SOURCE
|
|
.PD
|
|
.SH DESCRIPTION
|
|
.BR unlink ()
|
|
+system call is DEPRECATED, use
|
|
+.BR unlinkat ()
|
|
+instead!!!
|
|
+.PP
|
|
+.BR unlink ()
|
|
deletes a name from the filesystem.
|
|
If that name was the
|
|
last link to a file and no processes have the file open, the file is
|
|
diff --git a/man2/uselib.2 b/man2/uselib.2
|
|
deleted file mode 100644
|
|
index df7bad5..0000000
|
|
--- a/man2/uselib.2
|
|
+++ /dev/null
|
|
@@ -1,138 +0,0 @@
|
|
-.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
|
|
-.\"
|
|
-.\" %%%LICENSE_START(VERBATIM)
|
|
-.\" Permission is granted to make and distribute verbatim copies of this
|
|
-.\" manual provided the copyright notice and this permission notice are
|
|
-.\" preserved on all copies.
|
|
-.\"
|
|
-.\" Permission is granted to copy and distribute modified versions of this
|
|
-.\" manual under the conditions for verbatim copying, provided that the
|
|
-.\" entire resulting derived work is distributed under the terms of a
|
|
-.\" permission notice identical to this one.
|
|
-.\"
|
|
-.\" Since the Linux kernel and libraries are constantly changing, this
|
|
-.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
-.\" responsibility for errors or omissions, or for damages resulting from
|
|
-.\" the use of the information contained herein. The author(s) may not
|
|
-.\" have taken the same level of care in the production of this manual,
|
|
-.\" which is licensed free of charge, as they might when working
|
|
-.\" professionally.
|
|
-.\"
|
|
-.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
-.\" the source, must acknowledge the copyright and authors of this work.
|
|
-.\" %%%LICENSE_END
|
|
-.\"
|
|
-.\" Modified by Michael Haardt <michael@moria.de>
|
|
-.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
|
|
-.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
|
|
-.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
|
-.\" Modified 2005-01-09 by aeb
|
|
-.\"
|
|
-.TH USELIB 2 2017-09-15 "Linux" "Linux Programmer's Manual"
|
|
-.SH NAME
|
|
-uselib \- load shared library
|
|
-.SH SYNOPSIS
|
|
-.B #include <unistd.h>
|
|
-.PP
|
|
-.BI "int uselib(const char *" library );
|
|
-.PP
|
|
-.IR Note :
|
|
-No declaration of this system call is provided in glibc headers; see NOTES.
|
|
-.SH DESCRIPTION
|
|
-The system call
|
|
-.BR uselib ()
|
|
-serves to load
|
|
-a shared library to be used by the calling process.
|
|
-It is given a pathname.
|
|
-The address where to load is found
|
|
-in the library itself.
|
|
-The library can have any recognized
|
|
-binary format.
|
|
-.SH RETURN VALUE
|
|
-On success, zero is returned.
|
|
-On error, \-1 is returned, and
|
|
-.I errno
|
|
-is set appropriately.
|
|
-.SH ERRORS
|
|
-In addition to all of the error codes returned by
|
|
-.BR open (2)
|
|
-and
|
|
-.BR mmap (2),
|
|
-the following may also be returned:
|
|
-.TP
|
|
-.B EACCES
|
|
-The library specified by
|
|
-.I library
|
|
-does not have read or execute permission, or the caller does not have
|
|
-search permission for one of the directories in the path prefix.
|
|
-(See also
|
|
-.BR path_resolution (7).)
|
|
-.TP
|
|
-.B ENFILE
|
|
-The system-wide limit on the total number of open files has been reached.
|
|
-.TP
|
|
-.B ENOEXEC
|
|
-The file specified by
|
|
-.I library
|
|
-is not an executable of a known type;
|
|
-for example, it does not have the correct magic numbers.
|
|
-.SH CONFORMING TO
|
|
-.BR uselib ()
|
|
-is Linux-specific, and should not be used in programs
|
|
-intended to be portable.
|
|
-.SH NOTES
|
|
-This obsolete system call is not supported by glibc.
|
|
-No declaration is provided in glibc headers, but, through a quirk of history,
|
|
-glibc versions before 2.23 did export an ABI for this system call.
|
|
-Therefore, in order to employ this system call,
|
|
-it was sufficient to manually declare the interface in your code;
|
|
-alternatively, you could invoke the system call using
|
|
-.BR syscall (2).
|
|
-.PP
|
|
-In ancient libc versions,
|
|
-.BR uselib ()
|
|
-was used to load
|
|
-the shared libraries with names found in an array of names
|
|
-in the binary.
|
|
-.PP
|
|
-.\" libc 4.3.1f - changelog 1993-03-02
|
|
-Since libc 4.3.2, startup code tries to prefix these names
|
|
-with "/usr/lib", "/lib" and "" before giving up.
|
|
-.\" libc 4.3.4 - changelog 1993-04-21
|
|
-In libc 4.3.4 and later these names are looked for in the directories
|
|
-found in
|
|
-.BR LD_LIBRARY_PATH ,
|
|
-and if not found there,
|
|
-prefixes "/usr/lib", "/lib" and "/" are tried.
|
|
-.PP
|
|
-From libc 4.4.4 on only the library "/lib/ld.so" is loaded,
|
|
-so that this dynamic library can load the remaining libraries needed
|
|
-(again using this call).
|
|
-This is also the state of affairs in libc5.
|
|
-.PP
|
|
-glibc2 does not use this call.
|
|
-.PP
|
|
-Since Linux 3.15,
|
|
-.\" commit 69369a7003735d0d8ef22097e27a55a8bad9557a
|
|
-this system call is available only when the kernel is configured with the
|
|
-.B CONFIG_USELIB
|
|
-option.
|
|
-.SH SEE ALSO
|
|
-.BR ar (1),
|
|
-.BR gcc (1),
|
|
-.BR ld (1),
|
|
-.BR ldd (1),
|
|
-.BR mmap (2),
|
|
-.BR open (2),
|
|
-.BR dlopen (3),
|
|
-.BR capabilities (7),
|
|
-.BR ld.so (8)
|
|
-.SH COLOPHON
|
|
-This page is part of release 4.15 of the Linux
|
|
-.I man-pages
|
|
-project.
|
|
-A description of the project,
|
|
-information about reporting bugs,
|
|
-and the latest version of this page,
|
|
-can be found at
|
|
-\%https://www.kernel.org/doc/man\-pages/.
|
|
diff --git a/man2/ustat.2 b/man2/ustat.2
|
|
deleted file mode 100644
|
|
index 41e9a88..0000000
|
|
--- a/man2/ustat.2
|
|
+++ /dev/null
|
|
@@ -1,127 +0,0 @@
|
|
-.\" Copyright (C) 1995, Thomas K. Dyas <tdyas@eden.rutgers.edu>
|
|
-.\"
|
|
-.\" %%%LICENSE_START(VERBATIM)
|
|
-.\" Permission is granted to make and distribute verbatim copies of this
|
|
-.\" manual provided the copyright notice and this permission notice are
|
|
-.\" preserved on all copies.
|
|
-.\"
|
|
-.\" Permission is granted to copy and distribute modified versions of this
|
|
-.\" manual under the conditions for verbatim copying, provided that the
|
|
-.\" entire resulting derived work is distributed under the terms of a
|
|
-.\" permission notice identical to this one.
|
|
-.\"
|
|
-.\" Since the Linux kernel and libraries are constantly changing, this
|
|
-.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
-.\" responsibility for errors or omissions, or for damages resulting from
|
|
-.\" the use of the information contained herein. The author(s) may not
|
|
-.\" have taken the same level of care in the production of this manual,
|
|
-.\" which is licensed free of charge, as they might when working
|
|
-.\" professionally.
|
|
-.\"
|
|
-.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
-.\" the source, must acknowledge the copyright and authors of this work.
|
|
-.\" %%%LICENSE_END
|
|
-.\"
|
|
-.\" Created 1995-08-09 Thomas K. Dyas <tdyas@eden.rutgers.edu>
|
|
-.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
|
|
-.\" Modified 2001-03-22 by aeb
|
|
-.\" Modified 2003-08-04 by aeb
|
|
-.\"
|
|
-.TH USTAT 2 2017-09-15 "Linux" "Linux Programmer's Manual"
|
|
-.SH NAME
|
|
-ustat \- get filesystem statistics
|
|
-.SH SYNOPSIS
|
|
-.nf
|
|
-.B #include <sys/types.h>
|
|
-.BR "#include <unistd.h>" " /* libc[45] */"
|
|
-.BR "#include <ustat.h>" " /* glibc2 */"
|
|
-.PP
|
|
-.BI "int ustat(dev_t " dev ", struct ustat *" ubuf );
|
|
-.fi
|
|
-.SH DESCRIPTION
|
|
-.BR ustat ()
|
|
-returns information about a mounted filesystem.
|
|
-.I dev
|
|
-is a device number identifying a device containing
|
|
-a mounted filesystem.
|
|
-.I ubuf
|
|
-is a pointer to a
|
|
-.I ustat
|
|
-structure that contains the following
|
|
-members:
|
|
-.PP
|
|
-.in +4n
|
|
-.EX
|
|
-daddr_t f_tfree; /* Total free blocks */
|
|
-ino_t f_tinode; /* Number of free inodes */
|
|
-char f_fname[6]; /* Filsys name */
|
|
-char f_fpack[6]; /* Filsys pack name */
|
|
-.EE
|
|
-.in
|
|
-.PP
|
|
-The last two fields,
|
|
-.I f_fname
|
|
-and
|
|
-.IR f_fpack ,
|
|
-are not implemented and will
|
|
-always be filled with null bytes (\(aq\\0\(aq).
|
|
-.SH RETURN VALUE
|
|
-On success, zero is returned and the
|
|
-.I ustat
|
|
-structure pointed to by
|
|
-.I ubuf
|
|
-will be filled in.
|
|
-On error, \-1 is returned, and
|
|
-.I errno
|
|
-is set appropriately.
|
|
-.SH ERRORS
|
|
-.TP
|
|
-.B EFAULT
|
|
-.I ubuf
|
|
-points outside of your accessible address space.
|
|
-.TP
|
|
-.B EINVAL
|
|
-.I dev
|
|
-does not refer to a device containing a mounted filesystem.
|
|
-.TP
|
|
-.B ENOSYS
|
|
-The mounted filesystem referenced by
|
|
-.I dev
|
|
-does not support this operation, or any version of Linux before
|
|
-1.3.16.
|
|
-.SH CONFORMING TO
|
|
-SVr4.
|
|
-.\" SVr4 documents additional error conditions ENOLINK, ECOMM, and EINTR
|
|
-.\" but has no ENOSYS condition.
|
|
-.SH NOTES
|
|
-.BR ustat ()
|
|
-is deprecated and has been provided only for compatibility.
|
|
-All new programs should use
|
|
-.BR statfs (2)
|
|
-instead.
|
|
-.SS HP-UX notes
|
|
-The HP-UX version of the
|
|
-.I ustat
|
|
-structure has an additional field,
|
|
-.IR f_blksize ,
|
|
-that is unknown elsewhere.
|
|
-HP-UX warns:
|
|
-For some filesystems, the number of free inodes does not change.
|
|
-Such filesystems will return \-1 in the field
|
|
-.IR f_tinode .
|
|
-.\" Some software tries to use this in order to test whether the
|
|
-.\" underlying filesystem is NFS.
|
|
-For some filesystems, inodes are dynamically allocated.
|
|
-Such filesystems will return the current number of free inodes.
|
|
-.SH SEE ALSO
|
|
-.BR stat (2),
|
|
-.BR statfs (2)
|
|
-.SH COLOPHON
|
|
-This page is part of release 4.15 of the Linux
|
|
-.I man-pages
|
|
-project.
|
|
-A description of the project,
|
|
-information about reporting bugs,
|
|
-and the latest version of this page,
|
|
-can be found at
|
|
-\%https://www.kernel.org/doc/man\-pages/.
|
|
diff --git a/man2/utime.2 b/man2/utime.2
|
|
index 6c848e8..6393289 100644
|
|
--- a/man2/utime.2
|
|
+++ b/man2/utime.2
|
|
@@ -43,9 +43,12 @@ utime, utimes \- change file last access and modification times
|
|
.BI "int utimes(const char *" filename ", const struct timeval " times [2]);
|
|
.fi
|
|
.SH DESCRIPTION
|
|
-.B Note:
|
|
-modern applications may prefer to use the interfaces described in
|
|
-.BR utimensat (2).
|
|
+.BR utime ()
|
|
+and
|
|
+.BR utimes ()
|
|
+system calls are DEPRECATED, use
|
|
+.BR utimensat (2)
|
|
+instead!!!
|
|
.PP
|
|
The
|
|
.BR utime ()
|
|
diff --git a/man2/vfork.2 b/man2/vfork.2
|
|
deleted file mode 100644
|
|
index 32d6042..0000000
|
|
--- a/man2/vfork.2
|
|
+++ /dev/null
|
|
@@ -1,346 +0,0 @@
|
|
-.\" Copyright (c) 1999 Andries Brouwer (aeb@cwi.nl), 1 Nov 1999
|
|
-.\" and Copyright 2006, 2012, 2017 Michael Kerrisk <mtk.manpages@gmail.com>
|
|
-.\"
|
|
-.\" %%%LICENSE_START(VERBATIM)
|
|
-.\" Permission is granted to make and distribute verbatim copies of this
|
|
-.\" manual provided the copyright notice and this permission notice are
|
|
-.\" preserved on all copies.
|
|
-.\"
|
|
-.\" Permission is granted to copy and distribute modified versions of this
|
|
-.\" manual under the conditions for verbatim copying, provided that the
|
|
-.\" entire resulting derived work is distributed under the terms of a
|
|
-.\" permission notice identical to this one.
|
|
-.\"
|
|
-.\" Since the Linux kernel and libraries are constantly changing, this
|
|
-.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
-.\" responsibility for errors or omissions, or for damages resulting from
|
|
-.\" the use of the information contained herein. The author(s) may not
|
|
-.\" have taken the same level of care in the production of this manual,
|
|
-.\" which is licensed free of charge, as they might when working
|
|
-.\" professionally.
|
|
-.\"
|
|
-.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
-.\" the source, must acknowledge the copyright and authors of this work.
|
|
-.\" %%%LICENSE_END
|
|
-.\"
|
|
-.\" 1999-11-10: Merged text taken from the page contributed by
|
|
-.\" Reed H. Petty (rhp@draper.net)
|
|
-.\"
|
|
-.TH VFORK 2 2017-09-15 "Linux" "Linux Programmer's Manual"
|
|
-.SH NAME
|
|
-vfork \- create a child process and block parent
|
|
-.SH SYNOPSIS
|
|
-.B #include <sys/types.h>
|
|
-.br
|
|
-.B #include <unistd.h>
|
|
-.PP
|
|
-.B pid_t vfork(void);
|
|
-.PP
|
|
-.in -4n
|
|
-Feature Test Macro Requirements for glibc (see
|
|
-.BR feature_test_macros (7)):
|
|
-.in
|
|
-.PP
|
|
-.BR vfork ():
|
|
-.ad l
|
|
-.RS 4
|
|
-.PD 0
|
|
-.TP 4
|
|
-Since glibc 2.12:
|
|
-.nf
|
|
-(_XOPEN_SOURCE\ >=\ 500) && ! (_POSIX_C_SOURCE\ >=\ 200809L)
|
|
- || /* Since glibc 2.19: */ _DEFAULT_SOURCE
|
|
- || /* Glibc versions <= 2.19: */ _BSD_SOURCE
|
|
-.TP 4
|
|
-.fi
|
|
-Before glibc 2.12:
|
|
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
|
|
-.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
|
|
-.PD
|
|
-.RE
|
|
-.ad b
|
|
-.SH DESCRIPTION
|
|
-.SS Standard description
|
|
-(From POSIX.1)
|
|
-The
|
|
-.BR vfork ()
|
|
-function has the same effect as
|
|
-.BR fork (2),
|
|
-except that the behavior is undefined if the process created by
|
|
-.BR vfork ()
|
|
-either modifies any data other than a variable of type
|
|
-.I pid_t
|
|
-used to store the return value from
|
|
-.BR vfork (),
|
|
-or returns from the function in which
|
|
-.BR vfork ()
|
|
-was called, or calls any other function before successfully calling
|
|
-.BR _exit (2)
|
|
-or one of the
|
|
-.BR exec (3)
|
|
-family of functions.
|
|
-.SS Linux description
|
|
-.BR vfork (),
|
|
-just like
|
|
-.BR fork (2),
|
|
-creates a child process of the calling process.
|
|
-For details and return value and errors, see
|
|
-.BR fork (2).
|
|
-.PP
|
|
-.BR vfork ()
|
|
-is a special case of
|
|
-.BR clone (2).
|
|
-It is used to create new processes without copying the page tables of
|
|
-the parent process.
|
|
-It may be useful in performance-sensitive applications
|
|
-where a child is created which then immediately issues an
|
|
-.BR execve (2).
|
|
-.PP
|
|
-.BR vfork ()
|
|
-differs from
|
|
-.BR fork (2)
|
|
-in that the calling thread is suspended until the child terminates
|
|
-(either normally,
|
|
-by calling
|
|
-.BR _exit (2),
|
|
-or abnormally, after delivery of a fatal signal),
|
|
-or it makes a call to
|
|
-.BR execve (2).
|
|
-Until that point, the child shares all memory with its parent,
|
|
-including the stack.
|
|
-The child must not return from the current function or call
|
|
-.BR exit (3)
|
|
-(which would have the effect of calling exit handlers
|
|
-established by the parent process and flushing the parent's
|
|
-.BR stdio (3)
|
|
-buffers), but may call
|
|
-.BR _exit (2).
|
|
-.PP
|
|
-As with
|
|
-.BR fork (2),
|
|
-the child process created by
|
|
-.BR vfork ()
|
|
-inherits copies of various of the caller's process attributes
|
|
-(e.g., file descriptors, signal dispositions, and current working directory);
|
|
-the
|
|
-.BR vfork ()
|
|
-call differs only in the treatment of the virtual address space,
|
|
-as described above.
|
|
-.PP
|
|
-Signals sent to the parent
|
|
-arrive after the child releases the parent's memory
|
|
-(i.e., after the child terminates
|
|
-or calls
|
|
-.BR execve (2)).
|
|
-.SS Historic description
|
|
-Under Linux,
|
|
-.BR fork (2)
|
|
-is implemented using copy-on-write pages, so the only penalty incurred by
|
|
-.BR fork (2)
|
|
-is the time and memory required to duplicate the parent's page tables,
|
|
-and to create a unique task structure for the child.
|
|
-However, in the bad old days a
|
|
-.BR fork (2)
|
|
-would require making a complete copy of the caller's data space,
|
|
-often needlessly, since usually immediately afterward an
|
|
-.BR exec (3)
|
|
-is done.
|
|
-Thus, for greater efficiency, BSD introduced the
|
|
-.BR vfork ()
|
|
-system call, which did not fully copy the address space of
|
|
-the parent process, but borrowed the parent's memory and thread
|
|
-of control until a call to
|
|
-.BR execve (2)
|
|
-or an exit occurred.
|
|
-The parent process was suspended while the
|
|
-child was using its resources.
|
|
-The use of
|
|
-.BR vfork ()
|
|
-was tricky: for example, not modifying data
|
|
-in the parent process depended on knowing which variables were
|
|
-held in a register.
|
|
-.SH CONFORMING TO
|
|
-4.3BSD; POSIX.1-2001 (but marked OBSOLETE).
|
|
-POSIX.1-2008 removes the specification of
|
|
-.BR vfork ().
|
|
-.PP
|
|
-The requirements put on
|
|
-.BR vfork ()
|
|
-by the standards are weaker than those put on
|
|
-.BR fork (2),
|
|
-so an implementation where the two are synonymous is compliant.
|
|
-In particular, the programmer cannot rely on the parent
|
|
-remaining blocked until the child either terminates or calls
|
|
-.BR execve (2),
|
|
-and cannot rely on any specific behavior with respect to shared memory.
|
|
-.\" In AIXv3.1 vfork is equivalent to fork.
|
|
-.SH NOTES
|
|
-.PP
|
|
-Some consider the semantics of
|
|
-.BR vfork ()
|
|
-to be an architectural blemish, and the 4.2BSD man page stated:
|
|
-"This system call will be eliminated when proper system sharing mechanisms
|
|
-are implemented.
|
|
-Users should not depend on the memory sharing semantics of
|
|
-.BR vfork ()
|
|
-as it will, in that case, be made synonymous to
|
|
-.BR fork (2).\c
|
|
-"
|
|
-However, even though modern memory management hardware
|
|
-has decreased the performance difference between
|
|
-.BR fork (2)
|
|
-and
|
|
-.BR vfork (),
|
|
-there are various reasons why Linux and other systems have retained
|
|
-.BR vfork ():
|
|
-.IP * 3
|
|
-Some performance-critical applications require the small performance
|
|
-advantage conferred by
|
|
-.BR vfork ().
|
|
-.IP *
|
|
-.BR vfork ()
|
|
-can be implemented on systems that lack a memory-management unit (MMU), but
|
|
-.BR fork (2)
|
|
-can't be implemented on such systems.
|
|
-(POSIX.1-2008 removed
|
|
-.BR vfork ()
|
|
-from the standard; the POSIX rationale for the
|
|
-.BR posix_spawn (3)
|
|
-function notes that that function,
|
|
-which provides functionality equivalent to
|
|
-.BR fork (2)+ exec (3),
|
|
-is designed to be implementable on systems that lack an MMU.)
|
|
-.\" http://stackoverflow.com/questions/4259629/what-is-the-difference-between-fork-and-vfork
|
|
-.\" http://developers.sun.com/solaris/articles/subprocess/subprocess.html
|
|
-.\" http://mailman.uclinux.org/pipermail/uclinux-dev/2009-April/000684.html
|
|
-.\"
|
|
-.IP *
|
|
-On systems where memory is constrained,
|
|
-.BR vfork ()
|
|
-avoids the need to temporarily commit memory (see the description of
|
|
-.IR /proc/sys/vm/overcommit_memory
|
|
-in
|
|
-.BR proc (5))
|
|
-in order to execute a new program.
|
|
-(This can be especially beneficial where a large parent process wishes
|
|
-to execute a small helper program in a child process.)
|
|
-By contrast, using
|
|
-.BR fork (2)
|
|
-in this scenario requires either committing an amount of memory equal
|
|
-to the size of the parent process (if strict overcommitting is in force)
|
|
-or overcommitting memory with the risk that a process is terminated
|
|
-by the out-of-memory (OOM) killer.
|
|
-.\"
|
|
-.SS Caveats
|
|
-The child process should take care not to modify the memory in unintended ways,
|
|
-since such changes will be seen by the parent process once
|
|
-the child terminates or executes another program.
|
|
-In this regard, signal handlers can be especially problematic:
|
|
-if a signal handler that is invoked in the child of
|
|
-.BR vfork ()
|
|
-changes memory, those changes may result in an inconsistent process state
|
|
-from the perspective of the parent process
|
|
-(e.g., memory changes would be visible in the parent,
|
|
-but changes to the state of open file descriptors would not be visible).
|
|
-.PP
|
|
-When
|
|
-.BR vfork ()
|
|
-is called in a multithreaded process,
|
|
-only the calling thread is suspended until the child terminates
|
|
-or executes a new program.
|
|
-This means that the child is sharing an address space with other running code.
|
|
-This can be dangerous if another thread in the parent process
|
|
-changes credentials (using
|
|
-.BR setuid (2)
|
|
-or similar),
|
|
-since there are now two processes with different privilege levels
|
|
-running in the same address space.
|
|
-As an example of the dangers,
|
|
-suppose that a multithreaded program running as root creates a child using
|
|
-.BR vfork ().
|
|
-After the
|
|
-.BR vfork (),
|
|
-a thread in the parent process drops the process to an unprivileged user
|
|
-in order to run some untrusted code
|
|
-(e.g., perhaps via plug-in opened with
|
|
-.BR dlopen (3)).
|
|
-In this case, attacks are possible where the parent process uses
|
|
-.BR mmap (2)
|
|
-to map in code that will be executed by the privileged child process.
|
|
-.\"
|
|
-.SS Linux notes
|
|
-Fork handlers established using
|
|
-.BR pthread_atfork (3)
|
|
-are not called when a multithreaded program employing
|
|
-the NPTL threading library calls
|
|
-.BR vfork ().
|
|
-Fork handlers are called in this case in a program using the
|
|
-LinuxThreads threading library.
|
|
-(See
|
|
-.BR pthreads (7)
|
|
-for a description of Linux threading libraries.)
|
|
-.PP
|
|
-A call to
|
|
-.BR vfork ()
|
|
-is equivalent to calling
|
|
-.BR clone (2)
|
|
-with
|
|
-.I flags
|
|
-specified as:
|
|
-.PP
|
|
- CLONE_VM | CLONE_VFORK | SIGCHLD
|
|
-.SS History
|
|
-The
|
|
-.BR vfork ()
|
|
-system call appeared in 3.0BSD.
|
|
-.\" In the release notes for 4.2BSD Sam Leffler wrote: `vfork: Is still
|
|
-.\" present, but definitely on its way out'.
|
|
-In 4.4BSD it was made synonymous to
|
|
-.BR fork (2)
|
|
-but NetBSD introduced it again;
|
|
-see
|
|
-.UR http://www.netbsd.org\:/Documentation\:/kernel\:/vfork.html
|
|
-.UE .
|
|
-In Linux, it has been equivalent to
|
|
-.BR fork (2)
|
|
-until 2.2.0-pre6 or so.
|
|
-Since 2.2.0-pre9 (on i386, somewhat later on
|
|
-other architectures) it is an independent system call.
|
|
-Support was added in glibc 2.0.112.
|
|
-.SH BUGS
|
|
-.PP
|
|
-Details of the signal handling are obscure and differ between systems.
|
|
-The BSD man page states:
|
|
-"To avoid a possible deadlock situation, processes that are children
|
|
-in the middle of a
|
|
-.BR vfork ()
|
|
-are never sent
|
|
-.B SIGTTOU
|
|
-or
|
|
-.B SIGTTIN
|
|
-signals; rather, output or
|
|
-.IR ioctl s
|
|
-are allowed and input attempts result in an end-of-file indication."
|
|
-.\"
|
|
-.\" As far as I can tell, the following is not true in 2.6.19:
|
|
-.\" Currently (Linux 2.3.25),
|
|
-.\" .BR strace (1)
|
|
-.\" cannot follow
|
|
-.\" .BR vfork ()
|
|
-.\" and requires a kernel patch.
|
|
-.SH SEE ALSO
|
|
-.BR clone (2),
|
|
-.BR execve (2),
|
|
-.BR _exit (2),
|
|
-.BR fork (2),
|
|
-.BR unshare (2),
|
|
-.BR wait (2)
|
|
-.SH COLOPHON
|
|
-This page is part of release 4.15 of the Linux
|
|
-.I man-pages
|
|
-project.
|
|
-A description of the project,
|
|
-information about reporting bugs,
|
|
-and the latest version of this page,
|
|
-can be found at
|
|
-\%https://www.kernel.org/doc/man\-pages/.
|
|
diff --git a/man2/wait4.2 b/man2/wait4.2
|
|
index be31213..4fe7214 100644
|
|
--- a/man2/wait4.2
|
|
+++ b/man2/wait4.2
|
|
@@ -67,6 +67,13 @@ Feature Test Macro Requirements for glibc (see
|
|
_BSD_SOURCE
|
|
.ad
|
|
.SH DESCRIPTION
|
|
+.BR wait4 ()
|
|
+system call is DEPRECATED, use
|
|
+.BR waitpid (2)
|
|
+or
|
|
+.BR waitid (2)
|
|
+instead!!!
|
|
+.PP
|
|
These functions are obsolete; use
|
|
.BR waitpid (2)
|
|
or
|
|
--
|
|
2.17.1
|
|
|