[manual] Job control is no longer optional.

Job control was made mandatory in POSIX.1-2001: compare
<http://pubs.opengroup.org/onlinepubs/7990989775/xsh/unistd.h.html> with
<http://pubs.opengroup.org/onlinepubs/009695399/basedefs/unistd.h.html>.
Seventeen years later, we need not devote an entire manual @node to
warning people that this was once an optional POSIX feature.

	* manual/job.texi (Job Control is Optional): Remove node, as
	job control has not been optional in quite some time.
	(Job Control): Mention briefly that systems older than
	POSIX.1-2001 might not support job control.
	* manual/conf.texi (_POSIX_JOB_CONTROL): Will always be
	defined on systems conforming to POSIX.1-2001.
This commit is contained in:
Zack Weinberg 2018-10-17 14:10:51 -04:00
parent c5288d378a
commit 26756e5756
No known key found for this signature in database
GPG Key ID: 384F8E68AC65B0D5
3 changed files with 20 additions and 29 deletions

View File

@ -1,3 +1,12 @@
2018-10-17 Zack Weinberg <zackw@panix.com>
* manual/job.texi (Job Control is Optional): Remove node, as
job control has not been optional in quite some time.
(Job Control): Mention briefly that systems older than
POSIX.1-2001 might not support job control.
* manual/conf.texi (_POSIX_JOB_CONTROL): Will always be
defined on systems conforming to POSIX.1-2001.
2018-10-17 Arjun Shankar <arjun@redhat.com>
[BZ #22062]

View File

@ -156,6 +156,8 @@ supported; use @code{sysconf} to find out. @xref{Sysconf}.
If this symbol is defined, it indicates that the system supports job
control. Otherwise, the implementation behaves as if all processes
within a session belong to a single process group. @xref{Job Control}.
Systems conforming to the 2001 revision of POSIX, or newer, will
always define this symbol.
@end deftypevr
@deftypevr Macro int _POSIX_SAVED_IDS

View File

@ -19,9 +19,15 @@ You need to be familiar with concepts relating to process creation
Handling}) in order to understand this material presented in this
chapter.
@vindex _POSIX_JOB_CONTROL
Some old systems do not support job control, but @gnusystems{} always
have, and it is a required feature in the 2001 revision of POSIX.1
(@pxref{POSIX}). If you need to be portable to old systems, you can
use the @code{_POSIX_JOB_CONTROL} macro to test at compile-time
whether the system supports job control. @xref{System Options}.
@menu
* Concepts of Job Control:: Jobs can be controlled by a shell.
* Job Control is Optional:: Not all POSIX systems support job control.
* Controlling Terminal:: How a process gets its controlling terminal.
* Access to the Terminal:: How processes share the controlling terminal.
* Orphaned Process Groups:: Jobs left after the user logs out.
@ -29,7 +35,7 @@ chapter.
* Functions for Job Control:: Functions to control process groups.
@end menu
@node Concepts of Job Control, Job Control is Optional, , Job Control
@node Concepts of Job Control
@section Concepts of Job Control
@cindex shell
@ -102,30 +108,7 @@ jobs between foreground and background.
@xref{Access to the Terminal}, for more information about I/O to the
controlling terminal.
@node Job Control is Optional, Controlling Terminal, Concepts of Job Control , Job Control
@section Job Control is Optional
@cindex job control is optional
Not all operating systems support job control. @gnusystems{} do
support job control, but if you are using @theglibc{} on some other
system, that system may not support job control itself.
You can use the @code{_POSIX_JOB_CONTROL} macro to test at compile-time
whether the system supports job control. @xref{System Options}.
If job control is not supported, then there can be only one process
group per session, which behaves as if it were always in the foreground.
The functions for creating additional process groups simply fail with
the error code @code{ENOSYS}.
The macros naming the various job control signals (@pxref{Job Control
Signals}) are defined even if job control is not supported. However,
the system never generates these signals, and attempts to send a job
control signal or examine or specify their actions report errors or do
nothing.
@node Controlling Terminal, Access to the Terminal, Job Control is Optional, Job Control
@node Controlling Terminal
@section Controlling Terminal of a Process
One of the attributes of a process is its controlling terminal. Child
@ -1166,9 +1149,6 @@ The @code{setpgid} function puts the process @var{pid} into the process
group @var{pgid}. As a special case, either @var{pid} or @var{pgid} can
be zero to indicate the process ID of the calling process.
This function fails on a system that does not support job control.
@xref{Job Control is Optional}, for more information.
If the operation is successful, @code{setpgid} returns zero. Otherwise
it returns @code{-1}. The following @code{errno} error conditions are
defined for this function: