Files
oldlinux-files/Ref-docs/POSIX/susv3/basedefs/xbd_chap02.html
2024-02-19 00:21:47 -05:00

1510 lines
55 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link type="text/css" rel="stylesheet" href="style.css"><!-- Generated by The Open Group's rhtm tool v1.2.1 -->
<!-- Copyright (c) 2001 The Open Group, All Rights Reserved -->
<title>Conformance</title>
</head>
<body bgcolor="white">
<script type="text/javascript" language="JavaScript" src="../jscript/codes.js">
</script>
<basefont size="3"> <!--header start-->
<center><font size="2">The Open Group Base Specifications Issue 6<br>
IEEE Std 1003.1-2001<br>
Copyright &copy; 2001 The IEEE and The Open Group, All Rights reserved.</font></center>
<!--header end-->
<hr size="2" noshade>
<h2><a name="tag_02"></a>Conformance</h2>
<h3><a name="tag_02_01"></a>Implementation Conformance</h3>
<h4><a name="tag_02_01_01"></a>Requirements</h4>
<p>A <i>conforming implementation</i> shall meet all of the following criteria:</p>
<ol>
<li>
<p>The system shall support all utilities, functions, and facilities defined within IEEE&nbsp;Std&nbsp;1003.1-2001 that are
required for POSIX conformance (see <a href="#tag_02_01_03">POSIX Conformance</a> ). These interfaces shall support the functional
behavior described herein.</p>
</li>
<li>
<p>The system may support one or more options as described under <a href="#tag_02_01_05">Option Groups</a> . When an implementation
claims that an option is supported, all of its constituent parts shall be provided.</p>
</li>
<li>
<p>The system may support the X/Open System Interface Extension (XSI) as described under <a href="#tag_02_01_04">XSI
Conformance</a> .</p>
</li>
<li>
<p>The system may provide additional utilities, functions, or facilities not required by IEEE&nbsp;Std&nbsp;1003.1-2001.
Non-standard extensions of the utilities, functions, or facilities specified in IEEE&nbsp;Std&nbsp;1003.1-2001 should be identified
as such in the system documentation. Non-standard extensions, when used, may change the behavior of utilities, functions, or
facilities defined by IEEE&nbsp;Std&nbsp;1003.1-2001. The conformance document shall define an environment in which an application
can be run with the behavior specified by IEEE&nbsp;Std&nbsp;1003.1-2001. In no case shall such an environment require modification
of a Strictly Conforming POSIX Application (see <a href="#tag_02_02_01">Strictly Conforming POSIX Application</a> ).</p>
</li>
</ol>
<h4><a name="tag_02_01_02"></a>Documentation</h4>
<p>A conformance document with the following information shall be available for an implementation claiming conformance to
IEEE&nbsp;Std&nbsp;1003.1-2001. The conformance document shall have the same structure as IEEE&nbsp;Std&nbsp;1003.1-2001, with the
information presented in the appropriate sections and subsections. Sections and subsections that consist solely of subordinate
section titles, with no other information, are not required. The conformance document shall not contain information about extended
facilities or capabilities outside the scope of IEEE&nbsp;Std&nbsp;1003.1-2001.</p>
<p>The conformance document shall contain a statement that indicates the full name, number, and date of the standard that applies.
The conformance document may also list international software standards that are available for use by a Conforming POSIX
Application. Applicable characteristics where documentation is required by one of these standards, or by standards of government
bodies, may also be included.</p>
<p>The conformance document shall describe the limit values found in the headers <a href=
"limits.h.html"><i>&lt;limits.h&gt;</i></a> and <a href="unistd.h.html"><i>&lt;unistd.h&gt;</i></a> , stating values, the
conditions under which those values may change, and the limits of such variations, if any.</p>
<p>The conformance document shall describe the behavior of the implementation for all implementation-defined features defined in
IEEE&nbsp;Std&nbsp;1003.1-2001. This requirement shall be met by listing these features and providing either a specific reference
to the system documentation or providing full syntax and semantics of these features. When the value or behavior in the
implementation is designed to be variable or customized on each instantiation of the system, the implementation provider shall
document the nature and permissible ranges of this variation.</p>
<p>The conformance document may specify the behavior of the implementation for those features where IEEE&nbsp;Std&nbsp;1003.1-2001
states that implementations may vary or where features are identified as undefined or unspecified.</p>
<p>The conformance document shall not contain documentation other than that specified in the preceding paragraphs except where such
documentation is specifically allowed or required by other provisions of IEEE&nbsp;Std&nbsp;1003.1-2001.</p>
<p>The phrases &quot;shall document&quot; or &quot;shall be documented&quot; in IEEE&nbsp;Std&nbsp;1003.1-2001 mean that documentation of the
feature shall appear in the conformance document, as described previously, unless there is an explicit reference in the conformance
document to show where the information can be found in the system documentation.</p>
<p>The system documentation should also contain the information found in the conformance document.</p>
<h4><a name="tag_02_01_03"></a>POSIX Conformance</h4>
<p>A conforming implementation shall meet the following criteria for POSIX conformance.</p>
<h5><a name="tag_02_01_03_01"></a>POSIX System Interfaces</h5>
<ul>
<li>
<p>The system shall support all the mandatory functions and headers defined in IEEE&nbsp;Std&nbsp;1003.1-2001, and shall set the
symbolic constant _POSIX_VERSION to the value 200112L.</p>
</li>
<li>
<p>Although all implementations conforming to IEEE&nbsp;Std&nbsp;1003.1-2001 support all the features described below, there may be
system-dependent or file system-dependent configuration procedures that can remove or modify any or all of these features. Such
configurations should not be made if strict compliance is required.</p>
<p>The following symbolic constants shall either be undefined or defined with a value other than -1. If a constant is undefined, an
application should use the <a href="../functions/sysconf.html"><i>sysconf</i>()</a>, <a href=
"../functions/pathconf.html"><i>pathconf</i>()</a>, or <a href="../functions/fpathconf.html"><i>fpathconf</i>()</a> functions, or
the <a href="../utilities/getconf.html"><i>getconf</i></a> utility, to determine which features are present on the system at that
time or for the particular pathname in question.</p>
<ul>
<li>
<p>_POSIX_CHOWN_RESTRICTED</p>
<p>The use of <a href="../functions/chown.html"><i>chown</i>()</a> is restricted to a process with appropriate privileges, and to
changing the group ID of a file only to the effective group ID of the process or to one of its supplementary group IDs.</p>
</li>
<li>
<p>_POSIX_NO_TRUNC</p>
<p>Pathname components longer than {NAME_MAX} generate an error.</p>
</li>
</ul>
</li>
<li>
<p>The following symbolic constants shall be defined as follows:</p>
<ul>
<li>
<p>_POSIX_JOB_CONTROL shall have a value greater than zero.</p>
</li>
<li>
<p>_POSIX_SAVED_IDS shall have a value greater than zero.</p>
</li>
<li>
<p>_POSIX_VDISABLE shall have a value other than -1.</p>
</li>
</ul>
<basefont size="2">
<dl>
<dt><b>Note:</b></dt>
<dd>The symbols above represent historical options that are no longer allowed as options, but are retained here for
backwards-compatibility of applications.</dd>
</dl>
<basefont size="3"></li>
<li>
<p>The system may support one or more options (see <a href="#tag_02_01_06">Options</a> ) denoted by the following symbolic
constants:</p>
<ul>
<li>
<p>_POSIX_ADVISORY_INFO</p>
</li>
<li>
<p>_POSIX_ASYNCHRONOUS_IO</p>
</li>
<li>
<p>_POSIX_BARRIERS</p>
</li>
<li>
<p>_POSIX_CLOCK_SELECTION</p>
</li>
<li>
<p>_POSIX_CPUTIME</p>
</li>
<li>
<p>_POSIX_FSYNC</p>
</li>
<li>
<p>_POSIX_IPV6</p>
</li>
<li>
<p>_POSIX_MAPPED_FILES</p>
</li>
<li>
<p>_POSIX_MEMLOCK</p>
</li>
<li>
<p>_POSIX_MEMLOCK_RANGE</p>
</li>
<li>
<p>_POSIX_MEMORY_PROTECTION</p>
</li>
<li>
<p>_POSIX_MESSAGE_PASSING</p>
</li>
<li>
<p>_POSIX_MONOTONIC_CLOCK</p>
</li>
<li>
<p>_POSIX_PRIORITIZED_IO</p>
</li>
<li>
<p>_POSIX_PRIORITY_SCHEDULING</p>
</li>
<li>
<p>_POSIX_RAW_SOCKETS</p>
</li>
<li>
<p>_POSIX_REALTIME_SIGNALS</p>
</li>
<li>
<p>_POSIX_SEMAPHORES</p>
</li>
<li>
<p>_POSIX_SHARED_MEMORY_OBJECTS</p>
</li>
<li>
<p>_POSIX_SPAWN</p>
</li>
<li>
<p>_POSIX_SPIN_LOCKS</p>
</li>
<li>
<p>_POSIX_SPORADIC_SERVER</p>
</li>
<li>
<p>_POSIX_SYNCHRONIZED_IO</p>
</li>
<li>
<p>_POSIX_THREAD_ATTR_STACKADDR</p>
</li>
<li>
<p>_POSIX_THREAD_CPUTIME</p>
</li>
<li>
<p>_POSIX_THREAD_ATTR_STACKSIZE</p>
</li>
<li>
<p>_POSIX_THREAD_PRIO_INHERIT</p>
</li>
<li>
<p>_POSIX_THREAD_PRIO_PROTECT</p>
</li>
<li>
<p>_POSIX_THREAD_PRIORITY_SCHEDULING</p>
</li>
<li>
<p>_POSIX_THREAD_PROCESS_SHARED</p>
</li>
<li>
<p>_POSIX_THREAD_SAFE_FUNCTIONS</p>
</li>
<li>
<p>_POSIX_THREAD_SPORADIC_SERVER</p>
</li>
<li>
<p>_POSIX_THREADS</p>
</li>
<li>
<p>_POSIX_TIMEOUTS</p>
</li>
<li>
<p>_POSIX_TIMERS</p>
</li>
<li>
<p>_POSIX_TRACE</p>
</li>
<li>
<p>_POSIX_TRACE_EVENT_FILTER</p>
</li>
<li>
<p>_POSIX_TRACE_INHERIT</p>
</li>
<li>
<p>_POSIX_TRACE_LOG</p>
</li>
<li>
<p>_POSIX_TYPED_MEMORY_OBJECTS</p>
</li>
</ul>
<p>If any of the symbolic constants _POSIX_TRACE_EVENT_FILTER, _POSIX_TRACE_LOG, or _POSIX_TRACE_INHERIT is defined to have a value
other than -1, then the symbolic constant _POSIX_TRACE shall also be defined to have a value other than -1.</p>
</li>
<li>
<p><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border="0">
The system may support the XSI extensions (see <a href="#tag_02_01_05_02">XSI Option Groups</a> ) denoted by the following symbolic
constants:</p>
<ul>
<li>
<p>_XOPEN_CRYPT</p>
</li>
<li>
<p>_XOPEN_LEGACY</p>
</li>
<li>
<p>_XOPEN_REALTIME</p>
</li>
<li>
<p>_XOPEN_REALTIME_THREADS</p>
</li>
<li>
<p>_XOPEN_UNIX <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</li>
</ul>
</li>
</ul>
<h5><a name="tag_02_01_03_02"></a>POSIX Shell and Utilities</h5>
<ul>
<li>
<p>The system shall provide all the mandatory utilities in the Shell and Utilities volume of IEEE&nbsp;Std&nbsp;1003.1-2001 with
all the functional behavior described therein.</p>
</li>
<li>
<p>The system shall support the Large File capabilities described in the Shell and Utilities volume of
IEEE&nbsp;Std&nbsp;1003.1-2001.</p>
</li>
<li>
<p>The system may support one or more options (see <a href="#tag_02_01_06">Options</a> ) denoted by the following symbolic
constants. (The literal names below apply to the <a href="../utilities/getconf.html"><i>getconf</i></a> utility.)</p>
<ul>
<li>
<p>POSIX2_C_DEV</p>
</li>
<li>
<p>POSIX2_CHAR_TERM</p>
</li>
<li>
<p>POSIX2_FORT_DEV</p>
</li>
<li>
<p>POSIX2_FORT_RUN</p>
</li>
<li>
<p>POSIX2_LOCALEDEF</p>
</li>
<li>
<p>POSIX2_PBS</p>
</li>
<li>
<p>POSIX2_PBS_ACCOUNTING</p>
</li>
<li>
<p>POSIX2_PBS_LOCATE</p>
</li>
<li>
<p>POSIX2_PBS_MESSAGE</p>
</li>
<li>
<p>POSIX2_PBS_TRACK</p>
</li>
<li>
<p>POSIX2_SW_DEV</p>
</li>
<li>
<p>POSIX2_UPE</p>
</li>
</ul>
</li>
<li>
<p>The system may support the XSI extensions (see <a href="#tag_02_01_04">XSI Conformance</a> ).</p>
</li>
</ul>
<p>Additional language bindings and development utility options may be provided in other related standards or in a future version
of IEEE&nbsp;Std&nbsp;1003.1-2001. In the former case, additional symbolic constants of the same general form as shown in this
subsection should be defined by the related standard document and made available to the application without requiring
IEEE&nbsp;Std&nbsp;1003.1-2001 to be updated.</p>
<h4><a name="tag_02_01_04"></a>XSI Conformance</h4>
<p><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border="0">
This section describes the criteria for implementations conforming to the XSI extension (see <a href=
"xbd_chap03.html#tag_03_439"><i>XSI</i></a> ). This functionality is dependent on the support of the XSI extension (and the rest of
this section is not further marked). <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
<p>IEEE&nbsp;Std&nbsp;1003.1-2001 describes utilities, functions, and facilities offered to application programs by the X/Open
System Interface (XSI). An XSI-conforming implementation shall meet the criteria for POSIX conformance and the following
requirements.</p>
<h5><a name="tag_02_01_04_01"></a>XSI System Interfaces</h5>
<ul>
<li>
<p>The system shall support all the functions and headers defined in IEEE&nbsp;Std&nbsp;1003.1-2001 as part of the XSI extension
denoted by the symbolic constant _XOPEN_UNIX and any extensions marked with the XSI extension marking (see <a href=
"xbd_chap01.html#tag_01_05_01"><i>Codes</i></a> ).</p>
</li>
<li>
<p>The system shall support the <a href="../functions/mmap.html"><i>mmap</i>()</a>, <a href=
"../functions/munmap.html"><i>munmap</i>()</a>, and <a href="../functions/msync.html"><i>msync</i>()</a> functions.</p>
</li>
<li>
<p>The system shall support the following options defined within IEEE&nbsp;Std&nbsp;1003.1-2001 (see <a href=
"#tag_02_01_06">Options</a> ):</p>
<ul>
<li>
<p>_POSIX_FSYNC</p>
</li>
<li>
<p>_POSIX_MAPPED_FILES</p>
</li>
<li>
<p>_POSIX_MEMORY_PROTECTION</p>
</li>
<li>
<p>_POSIX_THREAD_ATTR_STACKADDR</p>
</li>
<li>
<p>_POSIX_THREAD_ATTR_STACKSIZE</p>
</li>
<li>
<p>_POSIX_THREAD_PROCESS_SHARED</p>
</li>
<li>
<p>_POSIX_THREAD_SAFE_FUNCTIONS</p>
</li>
<li>
<p>_POSIX_THREADS</p>
</li>
</ul>
</li>
<li>
<p>The system may support the following XSI Option Groups (see <a href="#tag_02_01_05_02">XSI Option Groups</a> ) defined within
IEEE&nbsp;Std&nbsp;1003.1-2001:</p>
<ul>
<li>
<p>Encryption</p>
</li>
<li>
<p>Realtime</p>
</li>
<li>
<p>Advanced Realtime</p>
</li>
<li>
<p>Realtime Threads</p>
</li>
<li>
<p>Advanced Realtime Threads</p>
</li>
<li>
<p>Tracing</p>
</li>
<li>
<p>XSI STREAMS</p>
</li>
<li>
<p>Legacy</p>
</li>
</ul>
</li>
</ul>
<h5><a name="tag_02_01_04_02"></a>XSI Shell and Utilities Conformance</h5>
<ul>
<li>
<p>The system shall support all the utilities defined in the Shell and Utilities volume of IEEE&nbsp;Std&nbsp;1003.1-2001 as part
of the XSI extension denoted by the XSI marking in the SYNOPSIS section, and any extensions marked with the XSI extension marking
(see <a href="xbd_chap01.html#tag_01_05_01"><i>Codes</i></a> ) within the text.</p>
</li>
<li>
<p>The system shall support the User Portability Utilities option.</p>
</li>
<li>
<p>The system shall support creation of locales (see <a href="xbd_chap07.html#tag_07"><i>Locale</i></a> ).</p>
</li>
<li>
<p>The C-language Development utility <a href="../utilities/c99.html"><i>c99</i></a> shall be supported.</p>
</li>
<li>
<p>The XSI Development Utilities option may be supported. It consists of the following software development utilities:</p>
<blockquote>
<table cellpadding="3">
<tr valign="top">
<td align="left">
<p class="tent"><br>
<a href="../utilities/admin.html"><i>admin</i></a><br>
<a href="../utilities/cflow.html"><i>cflow</i></a><br>
<a href="../utilities/ctags.html"><i>ctags</i></a><br>
<a href="../utilities/cxref.html"><i>cxref</i></a><br>
&nbsp;</p>
</td>
<td align="left">
<p class="tent"><br>
<a href="../utilities/delta.html"><i>delta</i></a><br>
<a href="../utilities/get.html"><i>get</i></a><br>
<a href="../utilities/m4.html"><i>m4</i></a><br>
<a href="../utilities/prs.html"><i>prs</i></a><br>
&nbsp;</p>
</td>
<td align="left">
<p class="tent"><br>
<a href="../utilities/rmdel.html"><i>rmdel</i></a><br>
<a href="../utilities/sact.html"><i>sact</i></a><br>
<a href="../utilities/sccs.html"><i>sccs</i></a><br>
<a href="../utilities/unget.html"><i>unget</i></a><br>
&nbsp;</p>
</td>
<td align="left">
<p class="tent"><br>
<a href="../utilities/val.html"><i>val</i></a><br>
<a href="../utilities/what.html"><i>what</i></a><br>
&nbsp;</p>
</td>
</tr>
</table>
</blockquote>
</li>
<li>
<p>Within the utilities that are provided, functionality marked by the code OF (see <a href=
"xbd_chap01.html#tag_01_05_01"><i>Codes</i></a> ) need not be provided.</p>
</li>
</ul>
<h4><a name="tag_02_01_05"></a>Option Groups</h4>
<p>An Option Group is a group of related functions or options defined within the System Interfaces volume of
IEEE&nbsp;Std&nbsp;1003.1-2001.</p>
<p>If an implementation supports an Option Group, then the system shall support the functional behavior described herein.</p>
<p>If an implementation does not support an Option Group, then the system need not support the functional behavior described
herein.</p>
<h5><a name="tag_02_01_05_01"></a>Subprofiling Considerations</h5>
<p>Profiling standards supporting functional requirements less than that required in IEEE&nbsp;Std&nbsp;1003.1-2001 may subset both
mandatory and optional functionality required for POSIX Conformance (see <a href="#tag_02_01_03">POSIX Conformance</a> ) or XSI
Conformance (see <a href="#tag_02_01_04">XSI Conformance</a> ). Such profiles shall organize the subsets into Subprofiling Option
Groups.</p>
<p>The Rationale (Informative) volume of IEEE&nbsp;Std&nbsp;1003.1-2001, Appendix E, Subprofiling Considerations (Informative)
describes a representative set of such Subprofiling Option Groups for use by profiles applicable to specialized realtime systems.
IEEE&nbsp;Std&nbsp;1003.1-2001 does not require that the presence of Subprofiling Option Groups be testable at compile-time (as
symbols defined in any header) or at runtime (via <a href="../functions/sysconf.html"><i>sysconf</i>()</a> or <a href=
"../utilities/getconf.html"><i>getconf</i></a>).</p>
<p>A Subprofiling Option Group may provide basic system functionality that other Subprofiling Option Groups and other options
depend upon.<a href="#tag_foot_1"><sup><small>1</small></sup></a> If a profile of IEEE&nbsp;Std&nbsp;1003.1-2001 does not require
an implementation to provide a Subprofiling Option Group that provides features utilized by a required Subprofiling Option Group
(or option),<a href="#tag_foot_2"><sup><small>2</small></sup></a> the profile shall specify<a href=
"#tag_foot_3"><sup><small>3</small></sup></a> all of the following:</p>
<ul>
<li>
<p>Restricted or altered behavior of interfaces defined in IEEE&nbsp;Std&nbsp;1003.1-2001 that may differ on an implementation of
the profile</p>
</li>
<li>
<p>Additional behaviors that may produce undefined or unspecified results</p>
</li>
<li>
<p>Additional implementation-defined behavior that implementations shall be required to document in the profile's conformance
document</p>
</li>
</ul>
<p>if any of the above is a result of the profile not requiring an interface required by IEEE&nbsp;Std&nbsp;1003.1-2001.</p>
<p>The following additional rules shall apply to all profiles of IEEE&nbsp;Std&nbsp;1003.1-2001:</p>
<ul>
<li>
<p>Any application that conforms to that profile shall also conform to IEEE&nbsp;Std&nbsp;1003.1-2001 (that is, a profile shall not
require restricted, altered, or extended behaviors of an implementation of IEEE&nbsp;Std&nbsp;1003.1-2001).</p>
</li>
<li>
<p>Profiles are permitted to add additional requirements to the limits defined in <a href=
"../basedefs/limits.h.html"><i>&lt;limits.h&gt;</i></a> and <a href="../basedefs/stdint.h.html"><i>&lt;stdint.h&gt;</i></a>,
subject to the following:</p>
<p>For the limits in <a href="../basedefs/limits.h.html"><i>&lt;limits.h&gt;</i></a> and <a href=
"../basedefs/stdint.h.html"><i>&lt;stdint.h&gt;</i></a>:</p>
<ul>
<li>
<p>If the limit is specified as having a fixed value, it shall not be changed by a profile.</p>
</li>
<li>
<p>If a limit is specified as having a minimum or maximum acceptable value, it may be changed by a profile as follows:</p>
<ul>
<li>
<p>A profile may increase a minimum acceptable value, but shall not make a minimum acceptable value smaller.</p>
</li>
<li>
<p>A profile may reduce a maximum acceptable value, but shall not make a maximum acceptable value larger.</p>
</li>
</ul>
</li>
</ul>
</li>
<li>
<p>A profile shall not change a limit specified as having a minimum or maximum value into a limit specified as having a fixed
value.</p>
</li>
<li>
<p>A profile shall not create new limits.</p>
</li>
<li>
<p>Any implementation that conforms to IEEE&nbsp;Std&nbsp;1003.1-2001 (including all options and extended limits required by the
profile) shall also conform to that profile.</p>
</li>
</ul>
<h5><a name="tag_02_01_05_02"></a>XSI Option Groups</h5>
<p><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border="0">
This section describes Option Groups to support the definition of XSI conformance within the System Interfaces volume of
IEEE&nbsp;Std&nbsp;1003.1-2001. This functionality is dependent on the support of the XSI extension (and the rest of this section
is not further marked). <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
<p>The following Option Groups are defined.</p>
<h5><a name="tag_02_01_05_03"></a>Encryption</h5>
<p>The Encryption Option Group is denoted by the symbolic constant _XOPEN_CRYPT. It includes the following functions:</p>
<blockquote><a href="../functions/crypt.html"><i>crypt</i>()</a>, <a href="../functions/encrypt.html"><i>encrypt</i>()</a>, <a
href="../functions/setkey.html"><i>setkey</i>()</a></blockquote>
<p>These functions are marked CRYPT.</p>
<p>Due to export restrictions on the decoding algorithm in some countries, implementations may be restricted in making these
functions available. All the functions in the Encryption Option Group may therefore return [ENOSYS] or, alternatively, <a href=
"../functions/encrypt.html"><i>encrypt</i>()</a> shall return [ENOSYS] for the decryption operation.</p>
<p>An implementation that claims conformance to this Option Group shall set _XOPEN_CRYPT to a value other than -1.</p>
<h5><a name="tag_02_01_05_04"></a>Realtime</h5>
<p>The Realtime Option Group is denoted by the symbolic constant _XOPEN_REALTIME.</p>
<p>This Option Group includes a set of realtime functions drawn from options within IEEE&nbsp;Std&nbsp;1003.1-2001 (see <a href=
"#tag_02_01_06">Options</a> ).</p>
<p>Where entire functions are included in the Option Group, the NAME section is marked with REALTIME. Where additional semantics
have been added to existing pages, the new material is identified by use of the appropriate margin legend for the underlying option
defined within IEEE&nbsp;Std&nbsp;1003.1-2001.</p>
<p>An implementation that claims conformance to this Option Group shall set _XOPEN_REALTIME to a value other than -1.</p>
<p>This Option Group consists of the set of the following options from within IEEE&nbsp;Std&nbsp;1003.1-2001 (see <a href=
"#tag_02_01_06">Options</a> ):</p>
<blockquote>
<pre>
_POSIX_ASYNCHRONOUS_IO
_POSIX_FSYNC
_POSIX_MAPPED_FILES
_POSIX_MEMLOCK
_POSIX_MEMLOCK_RANGE
_POSIX_MEMORY_PROTECTION
_POSIX_MESSAGE_PASSING
_POSIX_PRIORITIZED_IO
_POSIX_PRIORITY_SCHEDULING
_POSIX_REALTIME_SIGNALS
_POSIX_SEMAPHORES
_POSIX_SHARED_MEMORY_OBJECTS
_POSIX_SYNCHRONIZED_IO
_POSIX_TIMERS
</pre>
</blockquote>
<p>If the symbolic constant _XOPEN_REALTIME is defined to have a value other than -1, then the following symbolic constants shall
be defined by the implementation to have the value 200112L:</p>
<blockquote>
<pre>
_POSIX_ASYNCHRONOUS_IO
_POSIX_MEMLOCK
_POSIX_MEMLOCK_RANGE
_POSIX_MESSAGE_PASSING
_POSIX_PRIORITY_SCHEDULING
_POSIX_REALTIME_SIGNALS
_POSIX_SEMAPHORES
_POSIX_SHARED_MEMORY_OBJECTS
_POSIX_SYNCHRONIZED_IO
_POSIX_TIMERS
</pre>
</blockquote>
<p>The functionality associated with _POSIX_MAPPED_FILES, _POSIX_MEMORY_PROTECTION, and _POSIX_FSYNC is always supported on
XSI-conformant systems.</p>
<p>Support of _POSIX_PRIORITIZED_IO on XSI-conformant systems is optional. If this functionality is supported, then
_POSIX_PRIORITIZED_IO shall be set to a value other than -1. Otherwise, it shall be undefined.</p>
<p>If _POSIX_PRIORITIZED_IO is supported, then asynchronous I/O operations performed by <a href=
"../functions/aio_read.html"><i>aio_read</i>()</a>, <a href="../functions/aio_write.html"><i>aio_write</i>()</a>, and <a href=
"../functions/lio_listio.html"><i>lio_listio</i>()</a> shall be submitted at a priority equal to the scheduling priority of the
process minus <i>aiocbp</i>-&gt;<i>aio_reqprio</i>. The implementation shall also document for which files I/O prioritization is
supported.</p>
<h5><a name="tag_02_01_05_05"></a>Advanced Realtime</h5>
<p>An implementation that claims conformance to this Option Group shall also support the Realtime Option Group.</p>
<p>Where entire functions are included in the Option Group, the NAME section is marked with ADVANCED REALTIME. Where additional
semantics have been added to existing pages, the new material is identified by use of the appropriate margin legend for the
underlying option defined within IEEE&nbsp;Std&nbsp;1003.1-2001.</p>
<p>This Option Group consists of the set of the following options from within IEEE&nbsp;Std&nbsp;1003.1-2001 (see <a href=
"#tag_02_01_06">Options</a> ):</p>
<blockquote>
<pre>
_POSIX_ADVISORY_INFO
_POSIX_CLOCK_SELECTION
_POSIX_CPUTIME
_POSIX_MONOTONIC_CLOCK
_POSIX_SPAWN
_POSIX_SPORADIC_SERVER
_POSIX_TIMEOUTS
_POSIX_TYPED_MEMORY_OBJECTS
</pre>
</blockquote>
<p>If the implementation supports the Advanced Realtime Option Group, then the following symbolic constants shall be defined by the
implementation to have the value 200112L:</p>
<blockquote>
<pre>
_POSIX_ADVISORY_INFO
_POSIX_CLOCK_SELECTION
_POSIX_CPUTIME
_POSIX_MONOTONIC_CLOCK
_POSIX_SPAWN
_POSIX_SPORADIC_SERVER
_POSIX_TIMEOUTS
_POSIX_TYPED_MEMORY_OBJECTS
</pre>
</blockquote>
<p>If the symbolic constant _POSIX_SPORADIC_SERVER is defined, then the symbolic constant _POSIX_PRIORITY_SCHEDULING shall also be
defined by the implementation to have the value 200112L.</p>
<p>If the symbolic constant _POSIX_CPUTIME is defined, then the symbolic constant _POSIX_TIMERS shall also be defined by the
implementation to have the value 200112L.</p>
<p>If the symbolic constant _POSIX_MONOTONIC_CLOCK is defined, then the symbolic constant _POSIX_TIMERS shall also be defined by
the implementation to have the value 200112L.</p>
<p>If the symbolic constant _POSIX_CLOCK_SELECTION is defined, then the symbolic constant _POSIX_TIMERS shall also be defined by
the implementation to have the value 200112L.</p>
<h5><a name="tag_02_01_05_06"></a>Realtime Threads</h5>
<p>The Realtime Threads Option Group is denoted by the symbolic constant _XOPEN_REALTIME_THREADS.</p>
<p>This Option Group consists of the set of the following options from within IEEE&nbsp;Std&nbsp;1003.1-2001 (see <a href=
"#tag_02_01_06">Options</a> ):</p>
<blockquote>
<pre>
_POSIX_THREAD_PRIO_INHERIT
_POSIX_THREAD_PRIO_PROTECT
_POSIX_THREAD_PRIORITY_SCHEDULING
</pre>
</blockquote>
<p>Where applicable, whole pages are marked REALTIME THREADS, together with the appropriate option margin legend for the SYNOPSIS
section (see <a href="xbd_chap01.html#tag_01_05_01"><i>Codes</i></a> ).</p>
<p>An implementation that claims conformance to this Option Group shall set _XOPEN_REALTIME_THREADS to a value other than -1.</p>
<p>If the symbol _XOPEN_REALTIME_THREADS is defined to have a value other than -1, then the following options shall also be defined
by the implementation to have the value 200112L:</p>
<blockquote>
<pre>
_POSIX_THREAD_PRIO_INHERIT
_POSIX_THREAD_PRIO_PROTECT
_POSIX_THREAD_PRIORITY_SCHEDULING
</pre>
</blockquote>
<h5><a name="tag_02_01_05_07"></a>Advanced Realtime Threads</h5>
<p>An implementation that claims conformance to this Option Group shall also support the Realtime Threads Option Group.</p>
<p>Where entire functions are included in the Option Group, the NAME section is marked with ADVANCED REALTIME THREADS. Where
additional semantics have been added to existing pages, the new material is identified by use of the appropriate margin legend for
the underlying option defined within IEEE&nbsp;Std&nbsp;1003.1-2001.</p>
<p>This Option Group consists of the set of the following options from within IEEE&nbsp;Std&nbsp;1003.1-2001 (see <a href=
"#tag_02_01_06">Options</a> ):</p>
<blockquote>
<pre>
_POSIX_BARRIERS
_POSIX_SPIN_LOCKS
_POSIX_THREAD_CPUTIME
_POSIX_THREAD_SPORADIC_SERVER
</pre>
</blockquote>
<p>If the symbolic constant _POSIX_THREAD_SPORADIC_SERVER is defined to have the value 200112L, then the symbolic constant
_POSIX_THREAD_PRIORITY_SCHEDULING shall also be defined by the implementation to have the value 200112L.</p>
<p>If the symbolic constant _POSIX_THREAD_CPUTIME is defined to have the value 200112L, then the symbolic constant _POSIX_TIMERS
shall also be defined by the implementation to have the value 200112L.</p>
<p>If the symbolic constant _POSIX_BARRIERS is defined to have the value 200112L, then the symbolic constants _POSIX_THREADS and
_POSIX_THREAD_SAFE_FUNCTIONS shall also be defined by the implementation to have the value 200112L.</p>
<p>If the symbolic constant _POSIX_SPIN_LOCKS is defined to have the value 200112L, then the symbolic constants _POSIX_THREADS and
_POSIX_THREAD_SAFE_FUNCTIONS shall also be defined by the implementation to have the value 200112L.</p>
<p>If the implementation supports the Advanced Realtime Threads Option Group, then the following symbolic constants shall be
defined by the implementation to have the value 200112L:</p>
<blockquote>
<pre>
_POSIX_BARRIERS
_POSIX_SPIN_LOCKS
_POSIX_THREAD_CPUTIME
_POSIX_THREAD_SPORADIC_SERVER
</pre>
</blockquote>
<h5><a name="tag_02_01_05_08"></a>Tracing</h5>
<p>This Option Group includes a set of tracing functions drawn from options within IEEE&nbsp;Std&nbsp;1003.1-2001 (see <a href=
"#tag_02_01_06">Options</a> ).</p>
<p>Where entire functions are included in the Option Group, the NAME section is marked with TRACING. Where additional semantics
have been added to existing pages, the new material is identified by use of the appropriate margin legend for the underlying option
defined within IEEE&nbsp;Std&nbsp;1003.1-2001.</p>
<p>This Option Group consists of the set of the following options from within IEEE&nbsp;Std&nbsp;1003.1-2001 (see <a href=
"#tag_02_01_06">Options</a> ):</p>
<blockquote>
<pre>
_POSIX_TRACE
_POSIX_TRACE_EVENT_FILTER
_POSIX_TRACE_LOG
_POSIX_TRACE_INHERIT
</pre>
</blockquote>
<p>If the implementation supports the Tracing Option Group, then the following symbolic constants shall be defined by the
implementation to have the value 200112L:</p>
<blockquote>
<pre>
_POSIX_TRACE
_POSIX_TRACE_EVENT_FILTER
_POSIX_TRACE_LOG
_POSIX_TRACE_INHERIT
</pre>
</blockquote>
<h5><a name="tag_02_01_05_09"></a>XSI STREAMS</h5>
<p>The XSI STREAMS Option Group is denoted by the symbolic constant _XOPEN_STREAMS.</p>
<p>This Option Group includes functionality related to STREAMS, a uniform mechanism for implementing networking services and other
character-based I/O as described in the System Interfaces volume of IEEE&nbsp;Std&nbsp;1003.1-2001, <a href=
"../functions/xsh_chap02_06.html">Section 2.6, STREAMS</a>.</p>
<p>It includes the following functions:</p>
<blockquote><a href="../functions/fattach.html"><i>fattach</i>()</a>, <a href="../functions/fdetach.html"><i>fdetach</i>()</a>, <a
href="../functions/getmsg.html"><i>getmsg</i>()</a>, <a href="../functions/getpmsg.html"><i>getpmsg</i>()</a>, <a href=
"../functions/ioctl.html"><i>ioctl</i>()</a>, <a href="../functions/isastream.html"><i>isastream</i>()</a>, <a href=
"../functions/putmsg.html"><i>putmsg</i>()</a>, <a href="../functions/putpmsg.html"><i>putpmsg</i>()</a></blockquote>
<p>and the <a href="../basedefs/stropts.h.html"><i>&lt;stropts.h&gt;</i></a> header.</p>
<p>Where applicable, whole pages are marked STREAMS, together with the appropriate option margin legend for the SYNOPSIS section
(see <a href="xbd_chap01.html#tag_01_05_01"><i>Codes</i></a> ). Where additional semantics have been added to existing pages, the
new material is identified by use of the appropriate margin legend for the underlying option defined within
IEEE&nbsp;Std&nbsp;1003.1-2001.</p>
<p>An implementation that claims conformance to this Option Group shall set _XOPEN_STREAMS to a value other than -1.</p>
<h5><a name="tag_02_01_05_10"></a>Legacy</h5>
<p>The Legacy Option Group is denoted by the symbolic constant _XOPEN_LEGACY.</p>
<p>The Legacy Option Group includes the functions and headers which were mandatory in previous versions of
IEEE&nbsp;Std&nbsp;1003.1-2001 but are optional in this version.</p>
<p>These functions and headers are retained in IEEE&nbsp;Std&nbsp;1003.1-2001 because of their widespread use. Application writers
should not rely on the existence of these functions or headers in new applications, but should follow the migration path detailed
in the APPLICATION USAGE sections of the relevant pages.</p>
<p>Various factors may have contributed to the decision to mark a function or header LEGACY. In all cases, the specific reasons for
the withdrawal of a function or header are documented on the relevant pages.</p>
<p>Once a function or header is marked LEGACY, no modifications are made to the specifications of such functions or headers other
than to the APPLICATION USAGE sections of the relevant pages.</p>
<p>The functions and headers which form this Option Group are as follows:</p>
<blockquote><a href="../functions/bcmp.html"><i>bcmp</i>()</a>, <a href="../functions/bcopy.html"><i>bcopy</i>()</a>, <a href=
"../functions/bzero.html"><i>bzero</i>()</a>, <a href="../functions/ecvt.html"><i>ecvt</i>()</a>, <a href=
"../functions/fcvt.html"><i>fcvt</i>()</a>, <a href="../functions/ftime.html"><i>ftime</i>()</a>, <a href=
"../functions/gcvt.html"><i>gcvt</i>()</a>, <a href="../functions/getwd.html"><i>getwd</i>()</a>, <a href=
"../functions/index.html"><i>index</i>()</a>, <a href="../functions/mktemp.html"><i>mktemp</i>()</a>, <a href=
"../functions/rindex.html"><i>rindex</i>()</a>, <a href="../functions/utimes.html"><i>utimes</i>()</a>, <a href=
"../functions/wcswcs.html"><i>wcswcs</i>()</a></blockquote>
<p>An implementation that claims conformance to this Option Group shall set _XOPEN_LEGACY to a value other than -1.</p>
<h4><a name="tag_02_01_06"></a>Options</h4>
<p>The symbolic constants defined in <a href="../basedefs/unistd.h.html"><i>&lt;unistd.h&gt;</i></a>, <a href=
"unistd.h.html"><i>Constants for Options and Option Groups</i></a> reflect implementation options for
IEEE&nbsp;Std&nbsp;1003.1-2001. These symbols can be used by the application to determine which optional facilities are present on
the implementation. The <a href="../functions/sysconf.html"><i>sysconf</i>()</a> function defined in the System Interfaces volume
of IEEE&nbsp;Std&nbsp;1003.1-2001 or the <a href="../utilities/getconf.html"><i>getconf</i></a> utility defined in the Shell and
Utilities volume of IEEE&nbsp;Std&nbsp;1003.1-2001 can be used to retrieve the value of each symbol on each specific implementation
to determine whether the option is supported.</p>
<p>Where an option is not supported, the associated utilities, functions, or facilities need not be present.</p>
<p>Margin codes are defined for each option (see <a href="xbd_chap01.html#tag_01_05_01"><i>Codes</i></a> ).</p>
<h5><a name="tag_02_01_06_01"></a>System Interfaces</h5>
<p>Refer to <a href="../basedefs/unistd.h.html"><i>&lt;unistd.h&gt;</i></a>, <a href="unistd.h.html"><i>Constants for Options and
Option Groups</i></a> for the list of options.</p>
<h5><a name="tag_02_01_06_02"></a>Shell and Utilities</h5>
<p>Each of these symbols shall be considered valid names by the implementation. Refer to <a href=
"../basedefs/unistd.h.html"><i>&lt;unistd.h&gt;</i></a>, <a href="unistd.h.html"><i>Constants for Options and Option Groups</i></a>
.</p>
<p>The literal names shown below apply only to the <a href="../utilities/getconf.html"><i>getconf</i></a> utility.</p>
<dl compact>
<dt>POSIX2_C_DEV</dt>
<dd><sup>[<a href="javascript:open_code('CD')">CD</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border=
"0"><br>
The system supports the C-Language Development Utilities option. <img src="../images/opt-end.gif" alt="[Option End]" border="0">
<p>The utilities in the C-Language Development Utilities option are used for the development of C-language applications, including
compilation or translation of C source code and complex program generators for simple lexical tasks and processing of context-free
grammars.</p>
<p>The utilities listed below may be provided by a conforming system; however, any system claiming conformance to the C-Language
Development Utilities option shall provide all of the utilities listed.</p>
<blockquote>
<pre>
<a href="../utilities/c99.html"><i>c99</i></a>
<a href="../utilities/lex.html"><i>lex</i></a>
<a href="../utilities/yacc.html"><i>yacc</i></a>
</pre>
</blockquote>
</dd>
<dt>POSIX2_CHAR_TERM</dt>
<dd><br>
The system supports the Terminal Characteristics option. This value need not be present on a system not supporting the User
Portability Utilities option.
<p>Where applicable, the dependency is noted within the description of the utility.</p>
<p>This option applies only to systems supporting the User Portability Utilities option. If supported, then the system supports at
least one terminal type capable of all operations described in IEEE&nbsp;Std&nbsp;1003.1-2001; see <a href=
"xbd_chap10.html#tag_10_02"><i>Output Devices and Terminal Types</i></a> .</p>
</dd>
<dt>POSIX2_FORT_DEV</dt>
<dd><sup>[<a href="javascript:open_code('FD')">FD</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border=
"0"><br>
The system supports the FORTRAN Development Utilities option. <img src="../images/opt-end.gif" alt="[Option End]" border="0">
<p>The <a href="../utilities/fort77.html"><i>fort77</i></a> FORTRAN compiler is the only utility in the FORTRAN Development
Utilities option. This is used for the development of FORTRAN language applications, including compilation or translation of
FORTRAN source code.</p>
<p>The <a href="../utilities/fort77.html"><i>fort77</i></a> utility may be provided by a conforming system; however, any system
claiming conformance to the FORTRAN Development Utilities option shall provide the <a href=
"../utilities/fort77.html"><i>fort77</i></a> utility.</p>
</dd>
<dt>POSIX2_FORT_RUN</dt>
<dd><sup>[<a href="javascript:open_code('FR')">FR</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border=
"0"><br>
The system supports the FORTRAN Runtime Utilities option. <img src="../images/opt-end.gif" alt="[Option End]" border="0">
<p>The <a href="../utilities/asa.html"><i>asa</i></a> utility is the only utility in the FORTRAN Runtime Utilities option.</p>
<p>The <a href="../utilities/asa.html"><i>asa</i></a> utility may be provided by a conforming system; however, any system claiming
conformance to the FORTRAN Runtime Utilities option shall provide the <a href="../utilities/asa.html"><i>asa</i></a> utility.</p>
</dd>
<dt>POSIX2_LOCALEDEF</dt>
<dd><br>
The system supports the Locale Creation Utilities option.
<p>If supported, the system supports the creation of locales as described in the <a href=
"../utilities/localedef.html"><i>localedef</i></a> utility.</p>
<p>The <a href="../utilities/localedef.html"><i>localedef</i></a> utility may be provided by a conforming system; however, any
system claiming conformance to the Locale Creation Utilities option shall provide the <a href=
"../utilities/localedef.html"><i>localedef</i></a> utility.</p>
</dd>
<dt>POSIX2_PBS</dt>
<dd><sup>[<a href="javascript:open_code('BE')">BE</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border=
"0"><br>
The system supports the Batch Environment Services and Utilities option (see the Shell and Utilities volume of
IEEE&nbsp;Std&nbsp;1003.1-2001, <a href="../utilities/xcu_chap03.html">Chapter 3, Batch Environment Services</a>). <img src=
"../images/opt-end.gif" alt="[Option End]" border="0"> <basefont size="2">
<dl>
<dt><b>Note:</b></dt>
<dd>The Batch Environment Services and Utilities option is a combination of mandatory and optional batch services and utilities.
The POSIX_PBS symbolic constant implies the system supports all the mandatory batch services and utilities.</dd>
</dl>
<basefont size="3"></dd>
<dt>POSIX2_PBS_ACCOUNTING</dt>
<dd><br>
The system supports the Batch Accounting option.</dd>
<dt>POSIX2_PBS_CHECKPOINT</dt>
<dd><br>
The system supports the Batch Checkpoint/Restart option.</dd>
<dt>POSIX2_PBS_LOCATE</dt>
<dd><br>
The system supports the Locate Batch Job Request option.</dd>
<dt>POSIX2_PBS_MESSAGE</dt>
<dd><br>
The system supports the Batch Job Message Request option.</dd>
<dt>POSIX2_PBS_TRACK</dt>
<dd><br>
The system supports the Track Batch Job Request option.</dd>
<dt>POSIX2_SW_DEV</dt>
<dd><sup>[<a href="javascript:open_code('SD')">SD</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border=
"0"><br>
The system supports the Software Development Utilities option. <img src="../images/opt-end.gif" alt="[Option End]" border="0">
<p>The utilities in the Software Development Utilities option are used for the development of applications, including compilation
or translation of source code, the creation and maintenance of library archives, and the maintenance of groups of inter-dependent
programs.</p>
<p>The utilities listed below may be provided by the conforming system; however, any system claiming conformance to the Software
Development Utilities option shall provide all of the utilities listed here.</p>
<blockquote>
<pre>
<a href="../utilities/ar.html"><i>ar</i></a>
<a href="../utilities/make.html"><i>make</i></a>
<a href="../utilities/nm.html"><i>nm</i></a>
<a href="../utilities/strip.html"><i>strip</i></a>
</pre>
</blockquote>
</dd>
<dt>POSIX2_UPE</dt>
<dd><sup>[<a href="javascript:open_code('UP')">UP</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border=
"0"><br>
The system supports the User Portability Utilities option. <img src="../images/opt-end.gif" alt="[Option End]" border="0">
<p>The utilities in the User Portability Utilities option shall be implemented on all systems that claim conformance to this
option. Certain utilities are noted as having features that cannot be implemented on all terminal types; if the POSIX2_CHAR_TERM
option is supported, the system shall support all such features on at least one terminal type; see <a href=
"xbd_chap10.html#tag_10_02"><i>Output Devices and Terminal Types</i></a> .</p>
<p>Some of the utilities are required only on systems that also support the Software Development Utilities option, or the
character-at-a-time terminal option (see <a href="xbd_chap10.html#tag_10_02"><i>Output Devices and Terminal Types</i></a> ); such
utilities have this noted in their DESCRIPTION sections. All of the other utilities listed are required only on systems that claim
conformance to the User Portability Utilities option.</p>
<blockquote>
<table cellpadding="3">
<tr valign="top">
<td align="left">
<p class="tent"><br>
<a href="../utilities/alias.html"><i>alias</i></a><br>
<a href="../utilities/at.html"><i>at</i></a><br>
<a href="../utilities/batch.html"><i>batch</i></a><br>
<a href="../utilities/bg.html"><i>bg</i></a><br>
<a href="../utilities/crontab.html"><i>crontab</i></a><br>
<a href="../utilities/split.html"><i>split</i></a><br>
<a href="../utilities/ctags.html"><i>ctags</i></a><br>
<a href="../utilities/df.html"><i>df</i></a><br>
<a href="../utilities/du.html"><i>du</i></a><br>
<a href="../utilities/ex.html"><i>ex</i></a><br>
&nbsp;</p>
</td>
<td align="left">
<p class="tent"><br>
<a href="../utilities/expand.html"><i>expand</i></a><br>
<a href="../utilities/fc.html"><i>fc</i></a><br>
<a href="../utilities/fg.html"><i>fg</i></a><br>
<a href="../utilities/file.html"><i>file</i></a><br>
<a href="../utilities/jobs.html"><i>jobs</i></a><br>
<a href="../utilities/man.html"><i>man</i></a><br>
<a href="../utilities/mesg.html"><i>mesg</i></a><br>
<a href="../utilities/more.html"><i>more</i></a><br>
<a href="../utilities/newgrp.html"><i>newgrp</i></a><br>
<a href="../utilities/nice.html"><i>nice</i></a><br>
&nbsp;</p>
</td>
<td align="left">
<p class="tent"><br>
<a href="../utilities/nm.html"><i>nm</i></a><br>
<a href="../utilities/patch.html"><i>patch</i></a><br>
<a href="../utilities/ps.html"><i>ps</i></a><br>
<a href="../utilities/renice.html"><i>renice</i></a><br>
<a href="../utilities/split.html"><i>split</i></a><br>
<a href="../utilities/strings.html"><i>strings</i></a><br>
<a href="../utilities/tabs.html"><i>tabs</i></a><br>
<a href="../utilities/talk.html"><i>talk</i></a><br>
<a href="../utilities/time.html"><i>time</i></a><br>
<a href="../utilities/tput.html"><i>tput</i></a><br>
&nbsp;</p>
</td>
<td align="left">
<p class="tent"><br>
<a href="../utilities/unalias.html"><i>unalias</i></a><br>
<a href="../utilities/unexpand.html"><i>unexpand</i></a><br>
<a href="../utilities/uudecode.html"><i>uudecode</i></a><br>
<a href="../utilities/uuencode.html"><i>uuencode</i></a><br>
<a href="../utilities/vi.html"><i>vi</i></a><br>
<a href="../utilities/who.html"><i>who</i></a><br>
<a href="../utilities/write.html"><i>write</i></a><br>
&nbsp;</p>
</td>
</tr>
</table>
</blockquote>
</dd>
</dl>
<h3><a name="tag_02_02"></a>Application Conformance</h3>
<p>All applications claiming conformance to IEEE&nbsp;Std&nbsp;1003.1-2001 shall use only language-dependent services for the C
programming language described in <a href="#tag_02_03">Language-Dependent Services for the C Programming Language</a> , shall use
only the utilities and facilities defined in the Shell and Utilities volume of IEEE&nbsp;Std&nbsp;1003.1-2001, and shall fall
within one of the following categories.</p>
<h4><a name="tag_02_02_01"></a>Strictly Conforming POSIX Application</h4>
<p>A Strictly Conforming POSIX Application is an application that requires only the facilities described in
IEEE&nbsp;Std&nbsp;1003.1-2001. Such an application:</p>
<ol>
<li>
<p>Shall accept any implementation behavior that results from actions it takes in areas described in IEEE&nbsp;Std&nbsp;1003.1-2001
as <i>implementation-defined</i> or <i>unspecified</i>, or where IEEE&nbsp;Std&nbsp;1003.1-2001 indicates that implementations may
vary</p>
</li>
<li>
<p>Shall not perform any actions that are described as producing <i>undefined</i> results</p>
</li>
<li>
<p>For symbolic constants, shall accept any value in the range permitted by IEEE&nbsp;Std&nbsp;1003.1-2001, but shall not rely on
any value in the range being greater than the minimums listed or being less than the maximums listed in
IEEE&nbsp;Std&nbsp;1003.1-2001</p>
</li>
<li>
<p>Shall not use facilities designated as <i>obsolescent</i></p>
</li>
<li>
<p>Is required to tolerate and permitted to adapt to the presence or absence of optional facilities whose availability is indicated
by <a href="#tag_02_01_03">POSIX Conformance</a></p>
</li>
<li>
<p>For the C programming language, shall not produce any output dependent on any behavior described in the ISO/IEC&nbsp;9899:1999
standard as <i>unspecified</i>, <i>undefined</i>, or <i>implementation-defined</i>, unless the System Interfaces volume of
IEEE&nbsp;Std&nbsp;1003.1-2001 specifies the behavior</p>
</li>
<li>
<p>For the C programming language, shall not exceed any minimum implementation limit defined in the ISO/IEC&nbsp;9899:1999
standard, unless the System Interfaces volume of IEEE&nbsp;Std&nbsp;1003.1-2001 specifies a higher minimum implementation limit</p>
</li>
<li>
<p>For the C programming language, shall define _POSIX_C_SOURCE to be 200112L before any header is included</p>
</li>
</ol>
<p>Within IEEE&nbsp;Std&nbsp;1003.1-2001, any restrictions placed upon a Conforming POSIX Application shall restrict a Strictly
Conforming POSIX Application.</p>
<h4><a name="tag_02_02_02"></a>Conforming POSIX Application</h4>
<h5><a name="tag_02_02_02_01"></a>ISO/IEC Conforming POSIX Application</h5>
<p>An ISO/IEC Conforming POSIX Application is an application that uses only the facilities described in
IEEE&nbsp;Std&nbsp;1003.1-2001 and approved Conforming Language bindings for any ISO or IEC standard. Such an application shall
include a statement of conformance that documents all options and limit dependencies, and all other ISO or IEC standards used.</p>
<h5><a name="tag_02_02_02_02"></a>&lt;National Body&gt; Conforming POSIX Application</h5>
<p>A &lt;National Body&gt; Conforming POSIX Application differs from an ISO/IEC Conforming POSIX Application in that it also may
use specific standards of a single ISO/IEC member body referred to here as &lt;<i>National Body</i>&gt;. Such an application shall
include a statement of conformance that documents all options and limit dependencies, and all other &lt;National Body&gt; standards
used.</p>
<h4><a name="tag_02_02_03"></a>Conforming POSIX Application Using Extensions</h4>
<p>A Conforming POSIX Application Using Extensions is an application that differs from a Conforming POSIX Application only in that
it uses non-standard facilities that are consistent with IEEE&nbsp;Std&nbsp;1003.1-2001. Such an application shall fully document
its requirements for these extended facilities, in addition to the documentation required of a Conforming POSIX Application. A
Conforming POSIX Application Using Extensions shall be either an ISO/IEC Conforming POSIX Application Using Extensions or a
&lt;National Body&gt; Conforming POSIX Application Using Extensions (see <a href="#tag_02_02_02_01">ISO/IEC Conforming POSIX
Application</a> and <a href="#tag_02_02_02_02">&lt;National Body&gt; Conforming POSIX Application</a> ).</p>
<h4><a name="tag_02_02_04"></a>Strictly Conforming XSI Application</h4>
<p>A Strictly Conforming XSI Application is an application that requires only the facilities described in
IEEE&nbsp;Std&nbsp;1003.1-2001. Such an application:</p>
<ol>
<li>
<p>Shall accept any implementation behavior that results from actions it takes in areas described in IEEE&nbsp;Std&nbsp;1003.1-2001
as <i>implementation-defined</i> or <i>unspecified</i>, or where IEEE&nbsp;Std&nbsp;1003.1-2001 indicates that implementations may
vary</p>
</li>
<li>
<p>Shall not perform any actions that are described as producing <i>undefined</i> results</p>
</li>
<li>
<p>For symbolic constants, shall accept any value in the range permitted by IEEE&nbsp;Std&nbsp;1003.1-2001, but shall not rely on
any value in the range being greater than the minimums listed or being less than the maximums listed in
IEEE&nbsp;Std&nbsp;1003.1-2001</p>
</li>
<li>
<p>Shall not use facilities designated as <i>obsolescent</i></p>
</li>
<li>
<p>Is required to tolerate and permitted to adapt to the presence or absence of optional facilities whose availability is indicated
by <a href="#tag_02_01_04">XSI Conformance</a></p>
</li>
<li>
<p>For the C programming language, shall not produce any output dependent on any behavior described in the ISO&nbsp;C standard as
<i>unspecified</i>, <i>undefined</i>, or <i>implementation-defined</i>, unless the System Interfaces volume of
IEEE&nbsp;Std&nbsp;1003.1-2001 specifies the behavior</p>
</li>
<li>
<p>For the C programming language, shall not exceed any minimum implementation limit defined in the ISO&nbsp;C standard, unless the
System Interfaces volume of IEEE&nbsp;Std&nbsp;1003.1-2001 specifies a higher minimum implementation limit</p>
</li>
<li>
<p>For the C programming language, shall define _XOPEN_SOURCE to be 600 before any header is included</p>
</li>
</ol>
<p>Within IEEE&nbsp;Std&nbsp;1003.1-2001, any restrictions placed upon a Conforming POSIX Application shall restrict a Strictly
Conforming XSI Application.</p>
<h4><a name="tag_02_02_05"></a>Conforming XSI Application Using Extensions</h4>
<p>A Conforming XSI Application Using Extensions is an application that differs from a Strictly Conforming XSI Application only in
that it uses non-standard facilities that are consistent with IEEE&nbsp;Std&nbsp;1003.1-2001. Such an application shall fully
document its requirements for these extended facilities, in addition to the documentation required of a Strictly Conforming XSI
Application.</p>
<h3><a name="tag_02_03"></a>Language-Dependent Services for the C Programming Language</h3>
<p>Implementors seeking to claim conformance using the ISO&nbsp;C standard shall claim POSIX conformance as described in <a href=
"#tag_02_01_03">POSIX Conformance</a> .</p>
<h3><a name="tag_02_04"></a>Other Language-Related Specifications</h3>
<p>IEEE&nbsp;Std&nbsp;1003.1-2001 is currently specified in terms of the shell command language and ISO&nbsp;C. Bindings to other
programming languages are being developed.</p>
<p>If conformance to IEEE&nbsp;Std&nbsp;1003.1-2001 is claimed for implementation of any programming language, the implementation
of that language shall support the use of external symbols distinct to at least 31 bytes in length in the source program text.
(That is, identifiers that differ at or before the thirty-first byte shall be distinct.) If a national or international standard
governing a language defines a maximum length that is less than this value, the language-defined maximum shall be supported.
External symbols that differ only by case shall be distinct when the character set in use distinguishes uppercase and lowercase
characters and the language permits (or requires) uppercase and lowercase characters to be distinct in external symbols.</p>
<hr size="2" noshade>
<center><font size="2"><!--footer start-->
UNIX &reg; is a registered Trademark of The Open Group.<br>
POSIX &reg; is a registered Trademark of The IEEE.<br>
[ <a href="../mindex.html">Main Index</a> | <a href="../basedefs/contents.html">XBD</a> | <a href=
"../utilities/contents.html">XCU</a> | <a href="../functions/contents.html">XSH</a> | <a href="../xrat/contents.html">XRAT</a>
]</font></center>
<!--footer end-->
<hr size="2" noshade>
<hr>
<h4><a name="tag_02_04_01"></a>Footnotes</h4>
<dl compact>
<dt><a name="tag_foot_1">1.</a></dt>
<dd>As an example, the File System profiling option group provides underlying support for pathname resolution and file creation
which are needed by any interface in IEEE&nbsp;Std&nbsp;1003.1-2001 that parses a <i>path</i> argument. If a profile requires
support for the Device Input and Output profiling option group but does not require support for the File System profiling option
group, the profile must specify how pathname resolution is to behave in that profile, how the O_CREAT flag to <a href=
"../functions/open.html"><i>open</i>()</a> is to be handled (and the use of the character <tt>'a'</tt> in the <i>mode</i> argument
of <a href="../functions/fopen.html"><i>fopen</i>()</a> when a filename argument names a file that does not exist), and specify
lots of other details.</dd>
<dt><a name="tag_foot_2">2.</a></dt>
<dd>As an example, IEEE&nbsp;Std&nbsp;1003.1-2001 requires that implementations claiming to support the Range Memory Locking option
also support the Process Memory Locking option. A profile could require that the Range Memory Locking option had to be supplied
without requiring that the Process Memory Locking option be supplied as long as the profile specifies everything an application
writer or system implementor would have to know to build an application or implementation conforming to the profile.</dd>
<dt><a name="tag_foot_3">3.</a></dt>
<dd>Note that the profile could just specify that any use of the features not specified by the profile would produce undefined or
unspecified results.</dd>
</dl>
</body>
</html>