1unistd.h(0P)               POSIX Programmer's Manual              unistd.h(0P)
2
3
4

PROLOG

6       This  manual  page is part of the POSIX Programmer's Manual.  The Linux
7       implementation of this interface may differ (consult the  corresponding
8       Linux  manual page for details of Linux behavior), or the interface may
9       not be implemented on Linux.
10
11

NAME

13       unistd.h — standard symbolic constants and types
14

SYNOPSIS

16       #include <unistd.h>
17

DESCRIPTION

19       The <unistd.h> header  defines  miscellaneous  symbolic  constants  and
20       types,  and  declares miscellaneous functions. The actual values of the
21       constants are unspecified except as shown. The contents of this  header
22       are shown below.
23
24   Version Test Macros
25       The  <unistd.h>  header  shall define the following symbolic constants.
26       The values shall be suitable for use in #if preprocessing directives.
27
28       _POSIX_VERSION
29             Integer value indicating version  of  this  standard  (C-language
30             binding)  to  which  the implementation conforms. For implementa‐
31             tions conforming to POSIX.1‐2008, the value shall be 200809L.
32
33       _POSIX2_VERSION
34             Integer value indicating version of the Shell and Utilities  vol‐
35             ume  of  POSIX.1 to which the implementation conforms. For imple‐
36             mentations  conforming  to  POSIX.1‐2008,  the  value  shall   be
37             200809L.  For  profile implementations that define _POSIX_SUBPRO‐
38             FILE  (see  Section  2.1.5.1,  Subprofiling  Considerations)   in
39             <unistd.h>,  POSIX2_VERSION  may  be left undefined or be defined
40             with the value −1 to indicate that the Shell and Utilities volume
41             of   POSIX.1   is   not  supported.  In  this  case,  a  call  to
42             sysconf(_SC_2_VERSION) shall return either 200809L or −1 indicat‐
43             ing  that the Shell and Utilities volume of POSIX.1 is or is not,
44             respectively, supported at runtime.
45
46       The <unistd.h> header shall define the following symbolic constant only
47       if  the  implementation supports the XSI option; see Section 2.1.4, XSI
48       Conformance.  If defined, its value shall be suitable for  use  in  #if
49       preprocessing directives.
50
51       _XOPEN_VERSION
52             Integer  value indicating version of the X/Open Portability Guide
53             to which the implementation conforms. The value shall be 700.
54
55   Constants for Options and Option Groups
56       The following symbolic constants, if defined in <unistd.h>, shall  have
57       a  value  of  −1,  0, or greater, unless otherwise specified below. For
58       profile implementations  that  define  _POSIX_SUBPROFILE  (see  Section
59       2.1.5.1,   Subprofiling   Considerations)   in   <unistd.h>,  constants
60       described below as always having a value greater than zero need not  be
61       defined  and,  if  defined, may have a value of −1, 0, or greater.  The
62       values shall be suitable for use in #if preprocessing directives.
63
64       If a symbolic constant is not defined or is defined with the value  −1,
65       the  option  is  not supported for compilation. If it is defined with a
66       value greater than zero, the option shall always be supported when  the
67       application  is  executed.  If  it  is defined with the value zero, the
68       option shall be supported for compilation and might  or  might  not  be
69       supported  at  runtime. See Section 2.1.6, Options for further informa‐
70       tion about the conformance requirements of these  three  categories  of
71       support.
72
73       _POSIX_ADVISORY_INFO
74             The  implementation supports the Advisory Information option.  If
75             this symbol is defined in <unistd.h>, it shall be defined  to  be
76             −1, 0, or 200809L. The value of this symbol reported by sysconf()
77             shall either be −1 or 200809L.
78
79       _POSIX_ASYNCHRONOUS_IO
80             The implementation supports asynchronous input and output.   This
81             symbol shall always be set to the value 200809L.
82
83       _POSIX_BARRIERS
84             The  implementation  supports barriers.  This symbol shall always
85             be set to the value 200809L.
86
87       _POSIX_CHOWN_RESTRICTED
88             The use of chown() and fchown() is restricted to a  process  with
89             appropriate  privileges,  and  to changing the group ID of a file
90             only to the effective group ID of the process or to  one  of  its
91             supplementary  group  IDs.  This  symbol  shall be defined with a
92             value other than −1.
93
94       _POSIX_CLOCK_SELECTION
95             The implementation supports clock selection.  This  symbol  shall
96             always be set to the value 200809L.
97
98       _POSIX_CPUTIME
99             The  implementation  supports the Process CPU-Time Clocks option.
100             If this symbol is defined in <unistd.h>, it shall be  defined  to
101             be  −1,  0,  or  200809L.  The  value  of this symbol reported by
102             sysconf() shall either be −1 or 200809L.
103
104       _POSIX_FSYNC
105             The implementation supports the File Synchronization option.   If
106             this  symbol  is defined in <unistd.h>, it shall be defined to be
107             −1, 0, or 200809L. The value of this symbol reported by sysconf()
108             shall either be −1 or 200809L.
109
110       _POSIX_IPV6
111             The  implementation  supports the IPv6 option.  If this symbol is
112             defined in <unistd.h>, it shall  be  defined  to  be  −1,  0,  or
113             200809L.  The  value  of  this symbol reported by sysconf() shall
114             either be −1 or 200809L.
115
116       _POSIX_JOB_CONTROL
117             The implementation supports job control. This symbol shall always
118             be set to a value greater than zero.
119
120       _POSIX_MAPPED_FILES
121             The  implementation  supports  memory  mapped Files.  This symbol
122             shall always be set to the value 200809L.
123
124       _POSIX_MEMLOCK
125             The implementation supports the Process  Memory  Locking  option.
126             If  this  symbol is defined in <unistd.h>, it shall be defined to
127             be −1, 0, or 200809L.  The  value  of  this  symbol  reported  by
128             sysconf() shall either be −1 or 200809L.
129
130       _POSIX_MEMLOCK_RANGE
131             The  implementation supports the Range Memory Locking option.  If
132             this symbol is defined in <unistd.h>, it shall be defined  to  be
133             −1, 0, or 200809L. The value of this symbol reported by sysconf()
134             shall either be −1 or 200809L.
135
136       _POSIX_MEMORY_PROTECTION
137             The implementation supports memory protection.  This symbol shall
138             always be set to the value 200809L.
139
140       _POSIX_MESSAGE_PASSING
141             The  implementation supports the Message Passing option.  If this
142             symbol is defined in <unistd.h>, it shall be defined to be −1, 0,
143             or  200809L. The value of this symbol reported by sysconf() shall
144             either be −1 or 200809L.
145
146       _POSIX_MONOTONIC_CLOCK
147             The implementation supports the Monotonic Clock option.  If  this
148             symbol is defined in <unistd.h>, it shall be defined to be −1, 0,
149             or 200809L. The value of this symbol reported by sysconf()  shall
150             either be −1 or 200809L.
151
152       _POSIX_NO_TRUNC
153             Pathname  components  longer  than  {NAME_MAX} generate an error.
154             This symbol shall be defined with a value other than −1.
155
156       _POSIX_PRIORITIZED_IO
157             The implementation supports  the  Prioritized  Input  and  Output
158             option.   If  this  symbol  is defined in <unistd.h>, it shall be
159             defined to be −1,  0,  or  200809L.  The  value  of  this  symbol
160             reported by sysconf() shall either be −1 or 200809L.
161
162       _POSIX_PRIORITY_SCHEDULING
163             The  implementation  supports  the Process Scheduling option.  If
164             this symbol is defined in <unistd.h>, it shall be defined  to  be
165             −1, 0, or 200809L. The value of this symbol reported by sysconf()
166             shall either be −1 or 200809L.
167
168       _POSIX_RAW_SOCKETS
169             The implementation supports the Raw Sockets option.  If this sym‐
170             bol is defined in <unistd.h>, it shall be defined to be −1, 0, or
171             200809L. The value of this symbol  reported  by  sysconf()  shall
172             either be −1 or 200809L.
173
174       _POSIX_READER_WRITER_LOCKS
175             The  implementation supports read-write locks.  This symbol shall
176             always be set to the value 200809L.
177
178       _POSIX_REALTIME_SIGNALS
179             The implementation supports realtime signals.  This symbol  shall
180             always be set to the value 200809L.
181
182       _POSIX_REGEXP
183             The  implementation  supports  the  Regular  Expression  Handling
184             option.  This symbol shall always be set to a value greater  than
185             zero.
186
187       _POSIX_SAVED_IDS
188             Each  process  has  a saved set-user-ID and a saved set-group-ID.
189             This symbol shall always be set to a value greater than zero.
190
191       _POSIX_SEMAPHORES
192             The implementation supports semaphores.  This symbol shall always
193             be set to the value 200809L.
194
195       _POSIX_SHARED_MEMORY_OBJECTS
196             The implementation supports the Shared Memory Objects option.  If
197             this symbol is defined in <unistd.h>, it shall be defined  to  be
198             −1, 0, or 200809L. The value of this symbol reported by sysconf()
199             shall either be −1 or 200809L.
200
201       _POSIX_SHELL
202             The implementation supports the POSIX shell.  This  symbol  shall
203             always be set to a value greater than zero.
204
205       _POSIX_SPAWN
206             The  implementation supports the Spawn option.  If this symbol is
207             defined in <unistd.h>, it shall  be  defined  to  be  −1,  0,  or
208             200809L.  The  value  of  this symbol reported by sysconf() shall
209             either be −1 or 200809L.
210
211       _POSIX_SPIN_LOCKS
212             The implementation supports spin locks.  This symbol shall always
213             be set to the value 200809L.
214
215       _POSIX_SPORADIC_SERVER
216             The  implementation  supports the Process Sporadic Server option.
217             If this symbol is defined in <unistd.h>, it shall be  defined  to
218             be  −1,  0,  or  200809L.  The  value  of this symbol reported by
219             sysconf() shall either be −1 or 200809L.
220
221       _POSIX_SYNCHRONIZED_IO
222             The implementation supports the  Synchronized  Input  and  Output
223             option.   If  this  symbol  is defined in <unistd.h>, it shall be
224             defined to be −1,  0,  or  200809L.  The  value  of  this  symbol
225             reported by sysconf() shall either be −1 or 200809L.
226
227       _POSIX_THREAD_ATTR_STACKADDR
228             The  implementation  supports  the Thread Stack Address Attribute
229             option.  If this symbol is defined in  <unistd.h>,  it  shall  be
230             defined  to  be  −1,  0,  or  200809L.  The  value of this symbol
231             reported by sysconf() shall either be −1 or 200809L.
232
233       _POSIX_THREAD_ATTR_STACKSIZE
234             The implementation  supports  the  Thread  Stack  Size  Attribute
235             option.   If  this  symbol  is defined in <unistd.h>, it shall be
236             defined to be −1,  0,  or  200809L.  The  value  of  this  symbol
237             reported by sysconf() shall either be −1 or 200809L.
238
239       _POSIX_THREAD_CPUTIME
240             The  implementation  supports  the Thread CPU-Time Clocks option.
241             If this symbol is defined in <unistd.h>, it shall be  defined  to
242             be  −1,  0,  or  200809L.  The  value  of this symbol reported by
243             sysconf() shall either be −1 or 200809L.
244
245       _POSIX_THREAD_PRIO_INHERIT
246             The implementation supports the Non-Robust Mutex Priority Inheri‐
247             tance  option.  If this symbol is defined in <unistd.h>, it shall
248             be defined to be −1, 0, or 200809L.  The  value  of  this  symbol
249             reported by sysconf() shall either be −1 or 200809L.
250
251       _POSIX_THREAD_PRIO_PROTECT
252             The implementation supports the Non-Robust Mutex Priority Protec‐
253             tion option. If this symbol is defined in <unistd.h>, it shall be
254             defined  to  be  −1,  0,  or  200809L.  The  value of this symbol
255             reported by sysconf() shall either be −1 or 200809L.
256
257       _POSIX_THREAD_PRIORITY_SCHEDULING
258             The  implementation  supports  the  Thread  Execution  Scheduling
259             option.   If  this  symbol  is defined in <unistd.h>, it shall be
260             defined to be −1,  0,  or  200809L.  The  value  of  this  symbol
261             reported by sysconf() shall either be −1 or 200809L.
262
263       _POSIX_THREAD_PROCESS_SHARED
264             The  implementation  supports  the Thread Process-Shared Synchro‐
265             nization option.  If this symbol is  defined  in  <unistd.h>,  it
266             shall  be defined to be −1, 0, or 200809L. The value of this sym‐
267             bol reported by sysconf() shall either be −1 or 200809L.
268
269       _POSIX_THREAD_ROBUST_PRIO_INHERIT
270             The implementation supports the Robust Mutex Priority Inheritance
271             option.  If  this  symbol  is  defined in <unistd.h>, it shall be
272             defined to be −1,  0,  or  200809L.  The  value  of  this  symbol
273             reported by sysconf() shall either be −1 or 200809L.
274
275       _POSIX_THREAD_ROBUST_PRIO_PROTECT
276             The  implementation supports the Robust Mutex Priority Protection
277             option. If this symbol is defined  in  <unistd.h>,  it  shall  be
278             defined  to  be  −1,  0,  or  200809L.  The  value of this symbol
279             reported by sysconf() shall either be −1 or 200809L.
280
281       _POSIX_THREAD_SAFE_FUNCTIONS
282             The implementation supports thread-safe functions.   This  symbol
283             shall always be set to the value 200809L.
284
285       _POSIX_THREAD_SPORADIC_SERVER
286             The  implementation  supports  the Thread Sporadic Server option.
287             If this symbol is defined in <unistd.h>, it shall be  defined  to
288             be  −1,  0,  or  200809L.  The  value  of this symbol reported by
289             sysconf() shall either be −1 or 200809L.
290
291       _POSIX_THREADS
292             The implementation supports threads.  This symbol shall always be
293             set to the value 200809L.
294
295       _POSIX_TIMEOUTS
296             The  implementation  supports timeouts.  This symbol shall always
297             be set to the value 200809L.
298
299       _POSIX_TIMERS
300             The implementation supports timers.  This symbol shall always  be
301             set to the value 200809L.
302
303       _POSIX_TRACE
304             The  implementation supports the Trace option.  If this symbol is
305             defined in <unistd.h>, it shall  be  defined  to  be  −1,  0,  or
306             200809L.  The  value  of  this symbol reported by sysconf() shall
307             either be −1 or 200809L.
308
309       _POSIX_TRACE_EVENT_FILTER
310             The implementation supports the Trace Event  Filter  option.   If
311             this  symbol  is defined in <unistd.h>, it shall be defined to be
312             −1, 0, or 200809L. The value of this symbol reported by sysconf()
313             shall either be −1 or 200809L.
314
315       _POSIX_TRACE_INHERIT
316             The  implementation  supports  the Trace Inherit option.  If this
317             symbol is defined in <unistd.h>, it shall be defined to be −1, 0,
318             or  200809L. The value of this symbol reported by sysconf() shall
319             either be −1 or 200809L.
320
321       _POSIX_TRACE_LOG
322             The implementation supports the Trace Log option.  If this symbol
323             is  defined  in  <unistd.h>,  it shall be defined to be −1, 0, or
324             200809L. The value of this symbol  reported  by  sysconf()  shall
325             either be −1 or 200809L.
326
327       _POSIX_TYPED_MEMORY_OBJECTS
328             The  implementation supports the Typed Memory Objects option.  If
329             this symbol is defined in <unistd.h>, it shall be defined  to  be
330             −1, 0, or 200809L. The value of this symbol reported by sysconf()
331             shall either be −1 or 200809L.
332
333       _POSIX_V6_ILP32_OFF32
334             The implementation provides a C-language compilation  environment
335             with 32-bit int, long, pointer, and off_t types.
336
337       _POSIX_V6_ILP32_OFFBIG
338             The  implementation provides a C-language compilation environment
339             with 32-bit int, long, and pointer types and an off_t type  using
340             at least 64 bits.
341
342       _POSIX_V6_LP64_OFF64
343             The  implementation provides a C-language compilation environment
344             with 32-bit int and 64-bit long, pointer, and off_t types.
345
346       _POSIX_V6_LPBIG_OFFBIG
347             The implementation provides a C-language compilation  environment
348             with  an  int  type using at least 32 bits and long, pointer, and
349             off_t types using at least 64 bits.
350
351       _POSIX_V7_ILP32_OFF32
352             The implementation provides a C-language compilation  environment
353             with 32-bit int, long, pointer, and off_t types.
354
355       _POSIX_V7_ILP32_OFFBIG
356             The  implementation provides a C-language compilation environment
357             with 32-bit int, long, and pointer types and an off_t type  using
358             at least 64 bits.
359
360       _POSIX_V7_LP64_OFF64
361             The  implementation provides a C-language compilation environment
362             with 32-bit int and 64-bit long, pointer, and off_t types.
363
364       _POSIX_V7_LPBIG_OFFBIG
365             The implementation provides a C-language compilation  environment
366             with  an  int  type using at least 32 bits and long, pointer, and
367             off_t types using at least 64 bits.
368
369       _POSIX2_C_BIND
370             The implementation supports the C-Language Binding  option.  This
371             symbol shall always have the value 200809L.
372
373       _POSIX2_C_DEV
374             The  implementation supports the C-Language Development Utilities
375             option.  If this symbol is defined in  <unistd.h>,  it  shall  be
376             defined  to  be  −1,  0,  or  200809L.  The  value of this symbol
377             reported by sysconf() shall either be −1 or 200809L.
378
379       _POSIX2_CHAR_TERM
380             The implementation supports the Terminal Characteristics  option.
381             The value of this symbol reported by sysconf() shall either be −1
382             or a value greater than zero.
383
384       _POSIX2_FORT_DEV
385             The implementation supports  the  FORTRAN  Development  Utilities
386             option.   If  this  symbol  is defined in <unistd.h>, it shall be
387             defined to be −1,  0,  or  200809L.  The  value  of  this  symbol
388             reported by sysconf() shall either be −1 or 200809L.
389
390       _POSIX2_FORT_RUN
391             The implementation supports the FORTRAN Runtime Utilities option.
392             If this symbol is defined in <unistd.h>, it shall be  defined  to
393             be  −1,  0,  or  200809L.  The  value  of this symbol reported by
394             sysconf() shall either be −1 or 200809L.
395
396       _POSIX2_LOCALEDEF
397             The implementation  supports  the  creation  of  locales  by  the
398             localedef  utility.   If this symbol is defined in <unistd.h>, it
399             shall be defined to be −1, 0, or 200809L. The value of this  sym‐
400             bol reported by sysconf() shall either be −1 or 200809L.
401
402       _POSIX2_PBS
403             The  implementation  supports  the Batch Environment Services and
404             Utilities option.  If this symbol is defined  in  <unistd.h>,  it
405             shall  be defined to be −1, 0, or 200809L. The value of this sym‐
406             bol reported by sysconf() shall either be −1 or 200809L.
407
408       _POSIX2_PBS_ACCOUNTING
409             The implementation supports the Batch Accounting option.  If this
410             symbol is defined in <unistd.h>, it shall be defined to be −1, 0,
411             or 200809L. The value of this symbol reported by sysconf()  shall
412             either be −1 or 200809L.
413
414       _POSIX2_PBS_CHECKPOINT
415             The  implementation supports the Batch Checkpoint/Restart option.
416             If this symbol is defined in <unistd.h>, it shall be  defined  to
417             be  −1,  0,  or  200809L.  The  value  of this symbol reported by
418             sysconf() shall either be −1 or 200809L.
419
420       _POSIX2_PBS_LOCATE
421             The implementation supports the Locate Batch Job Request  option.
422             If  this  symbol is defined in <unistd.h>, it shall be defined to
423             be −1, 0, or 200809L.  The  value  of  this  symbol  reported  by
424             sysconf() shall either be −1 or 200809L.
425
426       _POSIX2_PBS_MESSAGE
427             The implementation supports the Batch Job Message Request option.
428             If this symbol is defined in <unistd.h>, it shall be  defined  to
429             be  −1,  0,  or  200809L.  The  value  of this symbol reported by
430             sysconf() shall either be −1 or 200809L.
431
432       _POSIX2_PBS_TRACK
433             The implementation supports the Track Batch Job  Request  option.
434             If  this  symbol is defined in <unistd.h>, it shall be defined to
435             be −1, 0, or 200809L.  The  value  of  this  symbol  reported  by
436             sysconf() shall either be −1 or 200809L.
437
438       _POSIX2_SW_DEV
439             The  implementation  supports  the Software Development Utilities
440             option.  If this symbol is defined in  <unistd.h>,  it  shall  be
441             defined  to  be  −1,  0,  or  200809L.  The  value of this symbol
442             reported by sysconf() shall either be −1 or 200809L.
443
444       _POSIX2_UPE
445             The  implementation  supports  the  User  Portability   Utilities
446             option.   If  this  symbol  is defined in <unistd.h>, it shall be
447             defined to be −1,  0,  or  200809L.  The  value  of  this  symbol
448             reported by sysconf() shall either be −1 or 200809L.
449
450       _XOPEN_CRYPT
451             The implementation supports the X/Open Encryption Option Group.
452
453       _XOPEN_ENH_I18N
454             The  implementation  supports  the  Issue  4,  Version 2 Enhanced
455             Internationalization Option Group. This symbol  shall  always  be
456             set to a value other than −1.
457
458       _XOPEN_REALTIME
459             The implementation supports the X/Open Realtime Option Group.
460
461       _XOPEN_REALTIME_THREADS
462             The  implementation  supports  the X/Open Realtime Threads Option
463             Group.
464
465       _XOPEN_SHM
466             The implementation supports the Issue 4, Version 2 Shared  Memory
467             Option  Group.  This  symbol shall always be set to a value other
468             than −1.
469
470       _XOPEN_STREAMS
471             The implementation supports the XSI STREAMS Option Group.
472
473       _XOPEN_UNIX
474             The implementation supports the XSI option.
475
476       _XOPEN_UUCP
477             The implementation supports the UUCP Utilities  option.  If  this
478             symbol is defined in <unistd.h>, it shall be defined to be −1, 0,
479             or 200809L. The value of this symbol reported by sysconf()  shall
480             be either −1 or 200809L.
481
482   Execution-Time Symbolic Constants
483       If  any  of  the  following  symbolic  constants are not defined in the
484       <unistd.h> header, the value shall vary depending on the file to  which
485       it  is  applied. If defined, they shall have values suitable for use in
486       #if preprocessing directives.
487
488       If any of the following symbolic constants are defined to have value −1
489       in  the  <unistd.h>  header,  the  implementation shall not provide the
490       option on any file; if any are defined to have a value other than −1 in
491       the  <unistd.h>  header, the implementation shall provide the option on
492       all applicable files.
493
494       All of the following values, whether defined as symbolic  constants  in
495       <unistd.h> or not, may be queried with respect to a specific file using
496       the pathconf() or fpathconf() functions:
497
498       _POSIX_ASYNC_IO
499             Asynchronous input or output operations may be performed for  the
500             associated file.
501
502       _POSIX_PRIO_IO
503             Prioritized  input  or output operations may be performed for the
504             associated file.
505
506       _POSIX_SYNC_IO
507             Synchronized input or output operations may be performed for  the
508             associated file.
509
510       If  the  following  symbolic  constants  are  defined in the <unistd.h>
511       header, they apply to files and all paths in all file  systems  on  the
512       implementation:
513
514       _POSIX_TIMESTAMP_RESOLUTION
515             The resolution in nanoseconds for all file timestamps.
516
517       _POSIX2_SYMLINKS
518             Symbolic links can be created.
519
520   Constants for Functions
521       The <unistd.h> header shall define NULL as described in <stddef.h>.
522
523       The <unistd.h> header shall define the following symbolic constants for
524       use with the access() function. The values shall be suitable for use in
525       #if preprocessing directives.
526
527       F_OK        Test for existence of file.
528
529       R_OK        Test for read permission.
530
531       W_OK        Test for write permission.
532
533       X_OK        Test for execute (search) permission.
534
535       The constants F_OK, R_OK, W_OK, and X_OK and the expressions R_OK|W_OK,
536       R_OK|X_OK, and R_OK|W_OK|X_OK shall all have distinct values.
537
538       The <unistd.h> header shall define the following symbolic constants for
539       the confstr() function:
540
541       _CS_PATH
542             This  is  the  value for the PATH environment variable that finds
543             all standard utilities.
544
545       _CS_POSIX_V7_ILP32_OFF32_CFLAGS
546             If sysconf(_SC_V7_ILP32_OFF32) returns −1, the  meaning  of  this
547             value is unspecified. Otherwise, this value is the set of initial
548             options to be given to the c99 utility to  build  an  application
549             using  a  programming  model  with 32-bit int, long, pointer, and
550             off_t types.
551
552       _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
553             If sysconf(_SC_V7_ILP32_OFF32) returns −1, the  meaning  of  this
554             value  is  unspecified. Otherwise, this value is the set of final
555             options to be given to the c99 utility to  build  an  application
556             using  a  programming  model  with 32-bit int, long, pointer, and
557             off_t types.
558
559       _CS_POSIX_V7_ILP32_OFF32_LIBS
560             If sysconf(_SC_V7_ILP32_OFF32) returns −1, the  meaning  of  this
561             value  is  unspecified.  Otherwise,  this  value  is  the  set of
562             libraries to be given to the c99 utility to build an  application
563             using  a  programming  model  with 32-bit int, long, pointer, and
564             off_t types.
565
566       _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
567             If sysconf(_SC_V7_ILP32_OFFBIG) returns −1, the meaning  of  this
568             value is unspecified. Otherwise, this value is the set of initial
569             options to be given to the c99 utility to  build  an  application
570             using  a  programming  model  with  32-bit int, long, and pointer
571             types, and an off_t type using at least 64 bits.
572
573       _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
574             If sysconf(_SC_V7_ILP32_OFFBIG) returns −1, the meaning  of  this
575             value  is  unspecified. Otherwise, this value is the set of final
576             options to be given to the c99 utility to  build  an  application
577             using  a  programming  model  with  32-bit int, long, and pointer
578             types, and an off_t type using at least 64 bits.
579
580       _CS_POSIX_V7_ILP32_OFFBIG_LIBS
581             If sysconf(_SC_V7_ILP32_OFFBIG) returns −1, the meaning  of  this
582             value  is  unspecified.  Otherwise,  this  value  is  the  set of
583             libraries to be given to the c99 utility to build an  application
584             using  a  programming  model  with  32-bit int, long, and pointer
585             types, and an off_t type using at least 64 bits.
586
587       _CS_POSIX_V7_LP64_OFF64_CFLAGS
588             If sysconf(_SC_V7_LP64_OFF64) returns −1,  the  meaning  of  this
589             value is unspecified. Otherwise, this value is the set of initial
590             options to be given to the c99 utility to  build  an  application
591             using  a  programming  model  with  32-bit  int  and 64-bit long,
592             pointer, and off_t types.
593
594       _CS_POSIX_V7_LP64_OFF64_LDFLAGS
595             If sysconf(_SC_V7_LP64_OFF64) returns −1,  the  meaning  of  this
596             value  is  unspecified. Otherwise, this value is the set of final
597             options to be given to the c99 utility to  build  an  application
598             using  a  programming  model  with  32-bit  int  and 64-bit long,
599             pointer, and off_t types.
600
601       _CS_POSIX_V7_LP64_OFF64_LIBS
602             If sysconf(_SC_V7_LP64_OFF64) returns −1,  the  meaning  of  this
603             value  is  unspecified.  Otherwise,  this  value  is  the  set of
604             libraries to be given to the c99 utility to build an  application
605             using  a  programming  model  with  32-bit  int  and 64-bit long,
606             pointer, and off_t types.
607
608       _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
609             If sysconf(_SC_V7_LPBIG_OFFBIG) returns −1, the meaning  of  this
610             value is unspecified. Otherwise, this value is the set of initial
611             options to be given to the c99 utility to  build  an  application
612             using a programming model with an int type using at least 32 bits
613             and long, pointer, and off_t types using at least 64 bits.
614
615       _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
616             If sysconf(_SC_V7_LPBIG_OFFBIG) returns −1, the meaning  of  this
617             value  is  unspecified. Otherwise, this value is the set of final
618             options to be given to the c99 utility to  build  an  application
619             using a programming model with an int type using at least 32 bits
620             and long, pointer, and off_t types using at least 64 bits.
621
622       _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
623             If sysconf(_SC_V7_LPBIG_OFFBIG) returns −1, the meaning  of  this
624             value  is  unspecified.  Otherwise,  this  value  is  the  set of
625             libraries to be given to the c99 utility to build an  application
626             using a programming model with an int type using at least 32 bits
627             and long, pointer, and off_t types using at least 64 bits.
628
629       _CS_POSIX_V7_THREADS_CFLAGS
630             If sysconf(_SC_POSIX_THREADS) returns −1,  the  meaning  of  this
631             value is unspecified. Otherwise, this value is the set of initial
632             options to be given to the c99 utility to build a  multi-threaded
633             application. These flags are in addition to those associated with
634             any of the other _CS_POSIX_V7_*_CFLAGS  values  used  to  specify
635             particular type size programing environments.
636
637       _CS_POSIX_V7_THREADS_LDFLAGS
638             If  sysconf(_SC_POSIX_THREADS)  returns  −1,  the meaning of this
639             value is unspecified. Otherwise, this value is the set  of  final
640             options  to be given to the c99 utility to build a multi-threaded
641             application. These flags are in addition to those associated with
642             any  of  the  other _CS_POSIX_V7_*_LDFLAGS values used to specify
643             particular type size programing environments.
644
645       _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
646             This value is a <newline>-separated list of names of  programming
647             environments  supported by the implementation in which the widths
648             of the blksize_t, cc_t, mode_t, nfds_t, pid_t, ptrdiff_t, size_t,
649             speed_t,  ssize_t,  suseconds_t,  tcflag_t,  wchar_t,  and wint_t
650             types are no greater than the width of type long.  The format  of
651             each name shall be suitable for use with the getconf −v option.
652
653       _CS_V7_ENV
654             This is the value that provides the environment variable informa‐
655             tion (other than that provided by _CS_PATH) that is  required  by
656             the   implementation  to  create  a  conforming  environment,  as
657             described in the implementation's conformance documentation.
658
659       The following symbolic constants are reserved  for  compatibility  with
660       Issue 6:
661
662       _CS_POSIX_V6_ILP32_OFF32_CFLAGS
663       _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
664       _CS_POSIX_V6_ILP32_OFF32_LIBS
665       _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
666       _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
667       _CS_POSIX_V6_ILP32_OFFBIG_LIBS
668       _CS_POSIX_V6_LP64_OFF64_CFLAGS
669       _CS_POSIX_V6_LP64_OFF64_LDFLAGS
670       _CS_POSIX_V6_LP64_OFF64_LIBS
671       _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
672       _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
673       _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
674       _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
675       _CS_V6_ENV
676
677       The  <unistd.h> header shall define SEEK_CUR, SEEK_END, and SEEK_SET as
678       described in <stdio.h>.
679
680       The <unistd.h> header shall define the following symbolic constants  as
681       possible values for the function argument to the lockf() function:
682
683       F_LOCK      Lock a section for exclusive use.
684
685       F_TEST      Test section for locks by other processes.
686
687       F_TLOCK     Test and lock a section for exclusive use.
688
689       F_ULOCK     Unlock locked sections.
690
691       The <unistd.h> header shall define the following symbolic constants for
692       pathconf():
693
694       _PC_2_SYMLINKS
695       _PC_ALLOC_SIZE_MIN
696       _PC_ASYNC_IO
697       _PC_CHOWN_RESTRICTED
698       _PC_FILESIZEBITS
699       _PC_LINK_MAX
700       _PC_MAX_CANON
701       _PC_MAX_INPUT
702       _PC_NAME_MAX
703       _PC_NO_TRUNC
704       _PC_PATH_MAX
705       _PC_PIPE_BUF
706       _PC_PRIO_IO
707       _PC_REC_INCR_XFER_SIZE
708       _PC_REC_MAX_XFER_SIZE
709       _PC_REC_MIN_XFER_SIZE
710       _PC_REC_XFER_ALIGN
711       _PC_SYMLINK_MAX
712       _PC_SYNC_IO
713       _PC_TIMESTAMP_RESOLUTION
714       _PC_VDISABLE
715
716       The <unistd.h> header shall define the following symbolic constants for
717       sysconf():
718
719       _SC_2_C_BIND
720       _SC_2_C_DEV
721       _SC_2_CHAR_TERM
722       _SC_2_FORT_DEV
723       _SC_2_FORT_RUN
724       _SC_2_LOCALEDEF
725       _SC_2_PBS
726       _SC_2_PBS_ACCOUNTING
727       _SC_2_PBS_CHECKPOINT
728       _SC_2_PBS_LOCATE
729       _SC_2_PBS_MESSAGE
730       _SC_2_PBS_TRACK
731       _SC_2_SW_DEV
732       _SC_2_UPE
733       _SC_2_VERSION
734       _SC_ADVISORY_INFO
735       _SC_AIO_LISTIO_MAX
736       _SC_AIO_MAX
737       _SC_AIO_PRIO_DELTA_MAX
738       _SC_ARG_MAX
739       _SC_ASYNCHRONOUS_IO
740       _SC_ATEXIT_MAX
741       _SC_BARRIERS
742       _SC_BC_BASE_MAX
743       _SC_BC_DIM_MAX
744       _SC_BC_SCALE_MAX
745       _SC_BC_STRING_MAX
746       _SC_CHILD_MAX
747       _SC_CLK_TCK
748       _SC_CLOCK_SELECTION
749       _SC_COLL_WEIGHTS_MAX
750       _SC_CPUTIME
751       _SC_DELAYTIMER_MAX
752       _SC_EXPR_NEST_MAX
753       _SC_FSYNC
754       _SC_GETGR_R_SIZE_MAX
755       _SC_GETPW_R_SIZE_MAX
756       _SC_HOST_NAME_MAX
757       _SC_IOV_MAX
758       _SC_IPV6
759       _SC_JOB_CONTROL
760       _SC_LINE_MAX
761       _SC_LOGIN_NAME_MAX
762       _SC_MAPPED_FILES
763       _SC_MEMLOCK
764       _SC_MEMLOCK_RANGE
765       _SC_MEMORY_PROTECTION
766       _SC_MESSAGE_PASSING
767       _SC_MONOTONIC_CLOCK
768       _SC_MQ_OPEN_MAX
769       _SC_MQ_PRIO_MAX
770       _SC_NGROUPS_MAX
771       _SC_OPEN_MAX
772       _SC_PAGE_SIZE
773       _SC_PAGESIZE
774       _SC_PRIORITIZED_IO
775       _SC_PRIORITY_SCHEDULING
776       _SC_RAW_SOCKETS
777       _SC_RE_DUP_MAX
778       _SC_READER_WRITER_LOCKS
779       _SC_REALTIME_SIGNALS
780       _SC_REGEXP
781       _SC_RTSIG_MAX
782       _SC_SAVED_IDS
783       _SC_SEM_NSEMS_MAX
784       _SC_SEM_VALUE_MAX
785       _SC_SEMAPHORES
786       _SC_SHARED_MEMORY_OBJECTS
787       _SC_SHELL
788       _SC_SIGQUEUE_MAX
789       _SC_SPAWN
790       _SC_SPIN_LOCKS
791       _SC_SPORADIC_SERVER
792       _SC_SS_REPL_MAX
793       _SC_STREAM_MAX
794       _SC_SYMLOOP_MAX
795       _SC_SYNCHRONIZED_IO
796       _SC_THREAD_ATTR_STACKADDR
797       _SC_THREAD_ATTR_STACKSIZE
798       _SC_THREAD_CPUTIME
799       _SC_THREAD_DESTRUCTOR_ITERATIONS
800       _SC_THREAD_KEYS_MAX
801       _SC_THREAD_PRIO_INHERIT
802       _SC_THREAD_PRIO_PROTECT
803       _SC_THREAD_PRIORITY_SCHEDULING
804       _SC_THREAD_PROCESS_SHARED
805       _SC_THREAD_ROBUST_PRIO_INHERIT
806       _SC_THREAD_ROBUST_PRIO_PROTECT
807       _SC_THREAD_SAFE_FUNCTIONS
808       _SC_THREAD_SPORADIC_SERVER
809       _SC_THREAD_STACK_MIN
810       _SC_THREAD_THREADS_MAX
811       _SC_THREADS
812       _SC_TIMEOUTS
813       _SC_TIMER_MAX
814       _SC_TIMERS
815       _SC_TRACE
816       _SC_TRACE_EVENT_FILTER
817       _SC_TRACE_EVENT_NAME_MAX
818       _SC_TRACE_INHERIT
819       _SC_TRACE_LOG
820       _SC_TRACE_NAME_MAX
821       _SC_TRACE_SYS_MAX
822       _SC_TRACE_USER_EVENT_MAX
823       _SC_TTY_NAME_MAX
824       _SC_TYPED_MEMORY_OBJECTS
825       _SC_TZNAME_MAX
826       _SC_V7_ILP32_OFF32
827       _SC_V7_ILP32_OFFBIG
828       _SC_V7_LP64_OFF64
829       _SC_V7_LPBIG_OFFBIG
830       _SC_V6_ILP32_OFF32
831       _SC_V6_ILP32_OFFBIG
832       _SC_V6_LP64_OFF64
833       _SC_V6_LPBIG_OFFBIG
834       _SC_VERSION
835       _SC_XOPEN_CRYPT
836       _SC_XOPEN_ENH_I18N
837       _SC_XOPEN_REALTIME
838       _SC_XOPEN_REALTIME_THREADS
839       _SC_XOPEN_SHM
840       _SC_XOPEN_STREAMS
841       _SC_XOPEN_UNIX
842       _SC_XOPEN_UUCP
843       _SC_XOPEN_VERSION
844
845       The two constants _SC_PAGESIZE and _SC_PAGE_SIZE may be defined to have
846       the same value.
847
848       The <unistd.h> header shall define the following symbolic constants for
849       file streams:
850
851       STDERR_FILENO File number of stderr; 2.
852
853       STDIN_FILENO  File number of stdin; 0.
854
855       STDOUT_FILENO File number of stdout; 1.
856
857       The  <unistd.h> header shall define the following symbolic constant for
858       terminal special character handling:
859
860       _POSIX_VDISABLE
861                     This symbol shall be defined to be the value of a charac‐
862                     ter  that  shall  disable terminal special character han‐
863                     dling as described in  Section  11.2.6,  Special  Control
864                     Characters.   This  symbol shall always be set to a value
865                     other than −1.
866
867   Type Definitions
868       The <unistd.h> header shall define the size_t, ssize_t,  uid_t,  gid_t,
869       off_t, and pid_t types as described in <sys/types.h>.
870
871       The  <unistd.h>  header  shall define the intptr_t type as described in
872       <inttypes.h>.
873
874   Declarations
875       The following shall be declared as functions and may also be defined as
876       macros. Function prototypes shall be provided.
877
878           int          access(const char *, int);
879           unsigned     alarm(unsigned);
880           int          chdir(const char *);
881           int          chown(const char *, uid_t, gid_t);
882           int          close(int);
883           size_t       confstr(int, char *, size_t);
884           char        *crypt(const char *, const char *);
885           int          dup(int);
886           int          dup2(int, int);
887           void         _exit(int);
888           void         encrypt(char [64], int);
889           int          execl(const char *, const char *, ...);
890           int          execle(const char *, const char *, ...);
891           int          execlp(const char *, const char *, ...);
892           int          execv(const char *, char *const []);
893           int          execve(const char *, char *const [], char *const []);
894           int          execvp(const char *, char *const []);
895           int          faccessat(int, const char *, int, int);
896           int          fchdir(int);
897           int          fchown(int, uid_t, gid_t);
898           int          fchownat(int, const char *, uid_t, gid_t, int);
899           int          fdatasync(int);
900           int          fexecve(int, char *const [], char *const []);
901           pid_t        fork(void);
902           long         fpathconf(int, int);
903           int          fsync(int);
904           int          ftruncate(int, off_t);
905           char        *getcwd(char *, size_t);
906           gid_t        getegid(void);
907           uid_t        geteuid(void);
908           gid_t        getgid(void);
909           int          getgroups(int, gid_t []);
910           long         gethostid(void);
911           int          gethostname(char *, size_t);
912           char        *getlogin(void);
913           int          getlogin_r(char *, size_t);
914           int          getopt(int, char * const [], const char *);
915           pid_t        getpgid(pid_t);
916           pid_t        getpgrp(void);
917           pid_t        getpid(void);
918           pid_t        getppid(void);
919           pid_t        getsid(pid_t);
920           uid_t        getuid(void);
921           int          isatty(int);
922           int          lchown(const char *, uid_t, gid_t);
923           int          link(const char *, const char *);
924           int          linkat(int, const char *, int, const char *, int);
925           int          lockf(int, int, off_t);
926           off_t        lseek(int, off_t, int);
927           int          nice(int);
928           long         pathconf(const char *, int);
929           int          pause(void);
930           int          pipe(int [2]);
931           ssize_t      pread(int, void *, size_t, off_t);
932           ssize_t      pwrite(int, const void *, size_t, off_t);
933           ssize_t      read(int, void *, size_t);
934           ssize_t      readlink(const char *restrict, char *restrict, size_t);
935           ssize_t      readlinkat(int, const char *restrict, char *restrict, size_t);
936           int          rmdir(const char *);
937           int          setegid(gid_t);
938           int          seteuid(uid_t);
939           int          setgid(gid_t);
940           int          setpgid(pid_t, pid_t);
941           pid_t        setpgrp(void);
942           int          setregid(gid_t, gid_t);
943           int          setreuid(uid_t, uid_t);
944           pid_t        setsid(void);
945           int          setuid(uid_t);
946           unsigned     sleep(unsigned);
947           void         swab(const void *restrict, void *restrict, ssize_t);
948           int          symlink(const char *, const char *);
949           int          symlinkat(const char *, int, const char *);
950           void         sync(void);
951           long         sysconf(int);
952           pid_t        tcgetpgrp(int);
953           int          tcsetpgrp(int, pid_t);
954           int          truncate(const char *, off_t);
955           char        *ttyname(int);
956           int          ttyname_r(int, char *, size_t);
957           int          unlink(const char *);
958           int          unlinkat(int, const char *, int);
959           ssize_t      write(int, const void *, size_t);
960
961       Implementations  may  also  include  the  pthread_atfork() prototype as
962       defined in <pthread.h>.  Implementations may also include the ctermid()
963       prototype as defined in <stdio.h>.
964
965       The <unistd.h> header shall declare the following external variables:
966
967           extern char  *optarg;
968           extern int    opterr, optind, optopt;
969
970       The following sections are informative.
971

APPLICATION USAGE

973       POSIX.1‐2008  only describes the behavior of systems that claim confor‐
974       mance to it. However, application developers who want to write applica‐
975       tions that adapt to other versions of this standard (or to systems that
976       do not conform to any POSIX standard) may find it useful to  code  them
977       so as to conditionally compile different code depending on the value of
978       _POSIX_VERSION, for example:
979
980           #if _POSIX_VERSION >= 200112L
981           /* Use the newer function that copes with large files. */
982           off_t pos=ftello(fp);
983           #else
984           /* Either this is an old version of POSIX, or _POSIX_VERSION is
985              not even defined, so use the traditional function. */
986           long pos=ftell(fp);
987           #endif
988
989       Earlier versions of POSIX.1‐2008 and of the Single  UNIX  Specification
990       can be identified by the following macros:
991
992       POSIX.1‐1988 standard
993             _POSIX_VERSION==198808L
994
995       POSIX.1‐1990 standard
996             _POSIX_VERSION==199009L
997
998       ISO POSIX‐1:1996 standard
999             _POSIX_VERSION==199506L
1000
1001       Single UNIX Specification, Version 1
1002             _XOPEN_UNIX and _XOPEN_VERSION==4
1003
1004       Single UNIX Specification, Version 2
1005             _XOPEN_UNIX and _XOPEN_VERSION==500
1006
1007       ISO POSIX‐1:2001 and Single UNIX Specification, Version 3
1008             _POSIX_VERSION==200112L,  plus  (if  the XSI option is supported)
1009             _XOPEN_UNIX and _XOPEN_VERSION==600
1010
1011       POSIX.1‐2008 does not make any attempt  to  define  application  binary
1012       interaction  with the underlying operating system. However, application
1013       developers may find it useful  to  query  _SC_VERSION  at  runtime  via
1014       sysconf()  to  determine  whether  the current version of the operating
1015       system supports the necessary functionality as in the following program
1016       fragment:
1017
1018           if (sysconf(_SC_VERSION) < 200809L) {
1019               fprintf(stderr, "POSIX.1-2008 system required, terminating \n");
1020               exit(1);
1021           }
1022
1023       New applications should not use _XOPEN_SHM or _XOPEN_ENH_I18N.
1024

RATIONALE

1026       As  POSIX.1‐2008 evolved, certain options became sufficiently standard‐
1027       ized that it was concluded that simply  requiring  one  of  the  option
1028       choices  was simpler than retaining the option. However, for backwards-
1029       compatibility, the option flags (with  required  constant  values)  are
1030       retained.
1031
1032   Version Test Macros
1033       The   standard   developers   considered  altering  the  definition  of
1034       _POSIX_VERSION and  removing  _SC_VERSION  from  the  specification  of
1035       sysconf()  since the utility to an application was deemed by some to be
1036       minimal, and since the implementation of the  functionality  is  poten‐
1037       tially  problematic. However, they recognized that support for existing
1038       application binaries is a concern to manufacturers, application  devel‐
1039       opers, and the users of implementations conforming to POSIX.1‐2008.
1040
1041       While  the  example  using _SC_VERSION in the APPLICATION USAGE section
1042       does not provide the greatest  degree  of  imaginable  utility  to  the
1043       application  developer  or user, it is arguably better than a core file
1044       or some other equally obscure result. (It is also possible  for  imple‐
1045       mentations  to  encode  and  recognize application binaries compiled in
1046       various POSIX.1-conforming environments, and modify  the  semantics  of
1047       the  underlying  system  to conform to the expectations of the applica‐
1048       tion.) For the reasons outlined in the preceding paragraphs and in  the
1049       APPLICATION  USAGE  section,  the standard developers elected to retain
1050       the _POSIX_VERSION and _SC_VERSION functionality.
1051
1052   Compile-Time Symbolic Constants for System-Wide Options
1053       POSIX.1‐2008 includes support in certain areas for  the  newly  adopted
1054       policy governing options and stubs.
1055
1056       This  policy  provides flexibility for implementations in how they sup‐
1057       port options. It also specifies how conforming applications  can  adapt
1058       to different implementations that support different sets of options. It
1059       allows the following:
1060
1061        1. If an implementation has no interest in supporting  an  option,  it
1062           does  not  have  to  provide  anything  associated with that option
1063           beyond the announcement that it does not support it.
1064
1065        2. An implementation can support a partial or incompatible version  of
1066           an  option  (as  a  non-standard  extension) as long as it does not
1067           claim to support the option.
1068
1069        3. An application can determine whether the  option  is  supported.  A
1070           strictly conforming application must check this announcement mecha‐
1071           nism before first using anything associated with the option.
1072
1073       There is an important implication of this policy.  POSIX.1‐2008  cannot
1074       dictate  the  behavior of interfaces associated with an option when the
1075       implementation does not claim to support the option. In particular,  it
1076       cannot  require  that  a function associated with an unsupported option
1077       will fail if it does not perform as  specified.  However,  this  policy
1078       does  not prevent a standard from requiring certain functions to always
1079       be present, but that they shall always fail  on  some  implementations.
1080       The  setpgid()  function  in the POSIX.1‐1990 standard, for example, is
1081       considered appropriate.
1082
1083       The POSIX standards include various options, and the C-language binding
1084       support  for an option implies that the implementation must supply data
1085       types and function interfaces. An application must be able to  discover
1086       whether the implementation supports each option.
1087
1088       Any  application  must  consider  the  following  three  cases for each
1089       option:
1090
1091        1. Option never supported.
1092
1093           The implementation advertises at compile time that the option  will
1094           never  be  supported.  In  this  case,  it is not necessary for the
1095           implementation to supply any of the data types or  function  inter‐
1096           faces that are provided only as part of the option. The implementa‐
1097           tion might provide data types and functions  that  are  similar  to
1098           those  defined  by  POSIX.1‐2008, but there is no guarantee for any
1099           particular behavior.
1100
1101        2. Option always supported.
1102
1103           The implementation advertises at compile time that the option  will
1104           always  be  supported.  In  this  case, all data types and function
1105           interfaces shall be available and shall operate as specified.
1106
1107        3. Option might or might not be supported.
1108
1109           Some implementations might not provide a mechanism to specify  sup‐
1110           port  of  options  at compile time. In addition, the implementation
1111           might be unable or unwilling to specify support or  non-support  at
1112           compile  time.   In either case, any application that might use the
1113           option at runtime must be able to compile and execute.  The  imple‐
1114           mentation  must  provide, at compile time, all data types and func‐
1115           tion interfaces that are necessary to allow this.  In  this  situa‐
1116           tion,  there  must  be  a  mechanism that allows the application to
1117           query, at runtime, whether the option is supported. If the applica‐
1118           tion  attempts  to  use  the  option  when it is not supported, the
1119           result is unspecified  unless  explicitly  specified  otherwise  in
1120           POSIX.1‐2008.
1121

FUTURE DIRECTIONS

1123       None.
1124

SEE ALSO

1126       <inttypes.h>,   <limits.h>,   <stddef.h>,   <stdio.h>,  <sys_socket.h>,
1127       <sys_types.h>, <termios.h>, <wctype.h>
1128
1129       The System Interfaces volume of POSIX.1‐2008, access(), alarm(),
1130       chown(), close(), confstr(), crypt(), ctermid(), dup(), _Exit(),
1131       encrypt(), exec, fchdir(), fchown(), fdatasync(), fork(), fpathconf(),
1132       fsync(), ftruncate(), getcwd(), getegid(), geteuid(), getgid(), get‐
1133       groups(), gethostid(), gethostname(), getlogin(), getopt(), getpgid(),
1134       getpgrp(), getpid(), getppid(), getsid(), getuid(), isatty(), lchown(),
1135       link(), lockf(), lseek(), nice(), pause(), pipe(), read(), readlink(),
1136       rmdir(), setegid(), seteuid(), setgid(), setpgid(), setpgrp(),
1137       setregid(), setreuid(), setsid(), setuid(), sleep(), swab(), symlink(),
1138       sync(), sysconf(), tcgetpgrp(), tcsetpgrp(), truncate(), ttyname(),
1139       unlink(), write()
1140
1142       Portions of this text are reprinted and reproduced in  electronic  form
1143       from IEEE Std 1003.1, 2013 Edition, Standard for Information Technology
1144       -- Portable Operating System Interface (POSIX),  The  Open  Group  Base
1145       Specifications Issue 7, Copyright (C) 2013 by the Institute of Electri‐
1146       cal and Electronics Engineers,  Inc  and  The  Open  Group.   (This  is
1147       POSIX.1-2008  with  the  2013  Technical Corrigendum 1 applied.) In the
1148       event of any discrepancy between this version and the original IEEE and
1149       The  Open Group Standard, the original IEEE and The Open Group Standard
1150       is the referee document. The original Standard can be  obtained  online
1151       at http://www.unix.org/online.html .
1152
1153       Any  typographical  or  formatting  errors that appear in this page are
1154       most likely to have been introduced during the conversion of the source
1155       files  to  man page format. To report such errors, see https://www.ker
1156       nel.org/doc/man-pages/reporting_bugs.html .
1157
1158
1159
1160IEEE/The Open Group                  2013                         unistd.h(0P)
Impressum