2 U N I X 2.1 U N I X C U N I X U N I X 80 U N I X ( ) U N I X 2.2 UNIX 2.2.1 ANSI C 1989 C A N S I X 3. 159-1989 ANSI 1989 ISO/IEC 9899:1990 A N S I ( I S O ) ANSI C C UN I X C ANSI 1989 4 Plauger 1992;Kernighan Ritchie 1988 B U N I X U N I X C 15 2-1 C ( P O S I X. 1 X P G 3 ) S V R 4 4. 3 + B S D U N I X 2-1 ANSI C P O S I X. 1 X P G 3 S V R 4 4. 3 + B S D < a s s e r t. h > < c p i o. h > c p i o < c t y p e. h > < d i r e n t. h > ( 4. 21 ) < e r r n o. h > ( 1. 7 ) < f c n t l. h > ( 3. 13 ) < f l o a t. h > < f t w. h > ( 4. 21 )
1 8 U N I X ANSI C P O S I X. 1 X P G 3 S V R 4 4. 3 + B S D < g r p. h > ( 6. 4 ) < l a n g i n f o. h > < l i m i t s. h > ( 2. 5 ) < l o c a l e. h > < m a t h. h > < n l _ t y p e s. h > < p w d. h > ( 6. 2 ) < r e g e x. h > < s e a r c h. h > < s e t j m p. h > g o t o ( 7. 10 ) < s i g n a l. h > ( 1 0 ) < s t d a r g. h > < s t d d e f. h > < s t d i o. h > I / O ( 5 ) < s t d l i b. h > < s t r i n g. h > < t a r. h > t a r < t e r m i o s. h > I / O ( 11 ) < t i m e. h > ( 6. 9 ) < u l i m i t. h > < u n i s t d. h > < u t i m e. h > ( 4. 19 ) < s y s / i p c. h > I P C ( 1 4. 6 ) < s y s / m s g. h > ( 14. 7 ) < s y s / s e m. h > ( 14. 8 ) < s y s / s h m. h > ( 14. 9 ) < s y s / s t a t. h > ( 4 ) < s y s / t i m e s. h > ( 8. 15 ) < s y s / t y p e s. h > ( 2. 7 ) < s y s / u t s n a m e. h > ( 6. 8 ) < s y s / w a i t. h > ( 8. 6 ) 2.2.2 IEEE POSIX P O S I X I E E E ( ) P O S I X (Portable Operating System Interface for Computer Environment) I E E E 1003. 1-1988 ( ) I E E E P O S I X 1003. 2 s h e l l 1003. 7 1 003 15 1003. 1 P O S I X
2 U N I X 19 1003. 1 U N I X U N I U N I X P O S I X ( ) 1003. 1 i n t e r f a c e i m p l e m e n t a t i o n 1003. 1 1988 IEEE 1003.1-1988 I S O IEEE Std.1003.1-1990 IEEE 1990 ISO/IEC 9945-1:1990 P O S I X. 1 IEEE 1003.1 1993 ( 1 003. 1 a ) I E E E I E E E 1003. 1-1990 ISO/IEC 9945-1:1990 P O S I X. 1 1 003. 1 a 1003. 1 a P O S I X. 1 P O S I X. 1 U n i x U N I X 2.2.3 X/Open XPG3 X / O p e n 7 X/Open Portability Guide X / O p e n 3 X Open 1989 X P G 3 X P G 3 2 XSI System Interface and Headers X S I U N I X IEEE Std.1003.1-1988 X P G 3 P O S I X. 1 P O S I X. 1 X P G 3 X / O p e n X P G 3 ANSI C X P G 3 X P G X P G 4 1993 2.2.4 FIPS F I P S (Federal Information Processing Standard) F I P S 151-1 1 989 4 I E E E S t d. 1003. 1-1988 ANSI C FIPS 151-1 P O S I X. 1 F I P S POSIX.1 FIPS 2. 5. 5 F I P S P O S I X. 1 POSIX.1 FIPS P O S I X. 1 P O S I X. 1 POSIX.1 FIPS P O S I X. 1 2.3 UNIX ANSI C IEEE POSIX X / O p e n
2 0 U N I X X P G 3? L e ffler 1989 1. 1 U N I X U N I P D P - 11 U N I X 6 1976 7 1979 V 6 V 7 U N I X (a) AT & T V ( U N I X ) ( b ) 4. x B S D (c) AT & T U N I X 8 9 10 2.3.1 SVR4 S V R 4 AT&T UNIX AT&T V 3. 2 ( S V R 3. 2 ) Sun S u no S 4. 3 B S D X e n i x Xenix V7 V 1989 1990 SVR4 POSIX 1003.1 X/Open XPG3 AT & T V ( S V I D ) AT&T 1989 S V I D 3 U N I X S V R 4 P O S I X. 1 S V I D S V R4 AT&T 1990e S V R 4 B S D AT&T 1990c 4. 3 B S D P O S I X S V R 4 2.3.2 4.3+BSD B S D 4. 2 B S D 1 983 4. 3 B S D 1986 VA X 4. 3 B S D Ta h o e 1 988 Ta h o e ( L e ff l e r 1989 4.3BSD Ta h o e ) 1990 4.3BSD Reno P O S I X. 1 4. 4 B S D 1992 B S D AT & T AT & T B S D AT & T U N I X AT & T AT & T B S D AT & T 1989 4.3BSD Ta h o e AT & T B S D 1. 0 B S D 2. 0 4.3BSD Reno ( ) 4. 4 B S D AT & T B S D 2. 0 4. 4 B S D 4. 3 + B S D B S D U N I X P D P - 11 VA X 90 80386 B S D
2 U N I X 21 386 B S D Bill Jolitz 1991 D r.dobb s Journal ( ) B S D 2. 0 2.4 IEEE POSIX ( ) U N I X S V R 4 4. 3 + B S D P O S I X P O S I X. 1 P O S I X S V R 4 4. 3 + B S D X P G 3 P O S I X. 1 X P G 3 P O S I X. 1 S V R 4 4. 3 + B S D ( S V R 3. 2 4. 3 B S D ) S V R 4 P O S I X I / O ( O _ N O N B L O C K ) V ( O _ N D E L AY ) P O S I X. 1 S V R 3. 2 4. 3 B S D P O S I X. 1 10 P O S I X. 1 2.5 ( ) V 14 255 S V R 4 V B S D 14 255 (1) (2) (3)
2 2 U N I X 2.5.1 ANSI C c o n f ANSI C 2-2 < l i m i t s. h > C 3 ANSI C 16 1 4 32 2 0 s i g n e d u n s i g n e 2-2 4 C H A R _ M I N S C H A R _ M I N C H A R _ M A X S C H A R _ M A X C H A R _ M I N 0 C H A R _ M A X U C H A R _ M A X < f l o a t. h > ANSI C F O P E N _ M A X I / O < s t d i o. h > 8 P O S I X. 1 S T R E A M _ M A X F O P E N _ M A X ANSI C < s t d i o. h > T M P _ M A X t m p n a m 5. 13 2-2 <limits.h> C H A R _ B I T c h a r 8 8 C H A R _ M A X c h a r ( ) 127 C H A R _ M I N c h a r ( ) 1 28 S C H A R _ M A X S C H A R _ M I N U C H A R _ M A X c h a r 127 127 c h a r 1 27 1 28 c h a r 255 255 I N T _ M A X i n t 32 767 2 147 483 647 I N T _ M I N i n t 32 767 2 147 483 648 U I N T _ M A X i n t 65 535 4 294 967 295 S H R T _ M I N s h o r t 32 767 32 768 S H R T _ M A X s h o r t 32 767 32 767 U S H R T _ M A X s h o r t 65 535 65 535 L O N G _ M A X l o n g 2 147 483 647 2 147 483 647 L O N G _ M I N l o n g 2 147 483 647 2 147 483 648 U L O N G _ M A X l o n g 4 294 967 295 4 294 967 295 M B _ L E N _ M A X 1 1 2.5.2 POSIX P O S I X. 1 P O S I X.
2 U N I X 23 3 3 (1) 2-3 13 (2) S S I Z E _ M A X (3) N G R O U P S _ M A X (4) ( ) ARG_MAX, CHILD_MAX, OPEN_MAX, STREAM_ M A X T Z N A M E _ M A X (5) ( ) LINK_MAX, MAX_CANON, MAX_INPUT, NAME_ MAX, PAT H _ M A X P I P E _ B U F (6) _ P O S I X _ S AVED_IDS, _POSIX_VERSION _ P O S I X _ J O B _ C O N T R O L (7) _POSIX_NO_TRUNC, _POSIX_VDISABLE _ P O S I X _ C H O W N _ R E S T R I C T E D (8) C L K _ T C K 33 15 2. 5. 4 sysconf, pathconf f p a t h c o n f 4 ~ 8 2-7 13 2-2-3 <limits.h> P O S I X. 1 _ P O S I X _ A R G _ M A X e x e c 4 0 9 6 _ P O S I X _ C H I L D _ M A X I D 6 _ P O S I X _ L I N K M A X 8 _ P O S I X _ M A X _ C A N O N 2 5 5 _ P O S I X _ M A X _ I N P U T 2 5 5 _ P O S I X _ N A M E _ M A X 1 4 _ P O S I X _ N G R O U P S _ M A X I D 0 _ P O S I X _ O P E N _ M A X 1 6 _ P O S I X _ P A T H _ M A X 2 5 5 _ P O S I X _ P I P E _ B U F 5 1 2 _ P O S I X _ S S I Z E _ M A X _ P O S I X _ S T R E A M _ M A X s s i z e _ t 32 767 I / O 8 _ P O S I X _ T Z N A M E _ M A X 3 P O S I X. 1 M A X U N I X 1 6 1 9 7 8 V 7 2 0 _ P O S I X _ PAT H _ M A X 255 _ P O S I X _ O P E N _ M A X _ P O S I X _ PAT H _ M A X 2-3 13 2 - _ P O S I X _ 13 2 ~ 5
2 4 U N I X 1 3 < l i m i t. h > P O S I X. 1 sysconf, pathconf f p a t h c o n f P O S I X. 1 ( ) S V R 4 S V R 4 O P E N _ M A X 2. 5. 7 2.5.3 XPG3 X P G 3 < l i m i t s. h > P O S I X. 1 2-4 2-4 <limits.h> X P G 3 N L _ A R G M A X N L _ L A N G M A X p r i n t f s c a n f 9 9 L A N G 14 14 N L _ M S G M A X 3 2, 7 6 7 3 2, 7 6 7 N L _ N M A X N 1 1 N L _ S E T M A X 2 5 5 2 5 5 N L _ T E X T M A X 255 255 N Z E R O 2 0 2 0 X P G 3 PA S S _ M A X n u l l < l i m i t s. h > P O S I X. 1 8 PA S S _ M A X s y s c o n f 2. 5. 4 2.5.4 sysconf pathconf fpathconf? #include <unistd.h> long sysconf(int n a m e) ; log pathconf(const char p a t * h n a m e,int n a m e) ; log fpathconf(int f i l e d e s,int n a m e) ; - 1 2-5 n a m e _ S C _ s y s c o n f _ P C _ p a t h c o n f f p a t h c o n f
2 U N I X 25 pathconf p a t h n a m e, fpathconf filedes (1) _PC_MAX_CANON _ P C _ M A X _ I N P U T _ P C _ V D I S A B L E (2) _PC_LINK_MAX ( ) (3) _PC_NAME_MAX _ P C _ N O _ T R U N C (4) _PC_PAT H _ M A X ( 2. 5. 7 ) (5) _PC_PIPE_BUF F I F O F I F O F I F O F I F (6) _PC_CHOWN_RESTRICTED 2-5 s y s c o n f p a t h c o n f f p a t h c o n f n a m e n a m e A R G _ M A X C H I L D _ M A X e x e c _ S C _ A R G _ M A X I D _ S C _ C H I L D _ M A X clock ticks/ second _ S C _ C L K _ T C K N G R O U P S _ M A X I D _ S C _ N G R O U P S _ M A X O P E N _ M A X _ S C _ O P E N _ M A X P A S S _ M A X _ S C _ P A S S _ M A X S T R E A M _ M A X I /O _ S C _ S T R E A M _ M A X FOPEN_MAX T Z N A M E _ M A X _ S C _ T Z N A M E _ M A X _ P O S I X _ J O B _ C O N T R O L _ P O S I X _ S A V E D _ I D S _ P O S I X _ V E R S I O N _ X O P E N _ V E R S I O N _ S C _ J O B _ C O N T R O L - - I D _ S C _ S A V E D _ I D S - - I D P O S I X. 1 X P G P O S I X. 1 _ S C _ V E R S I O N _ S C _ X O P E N _ V E R S I O N L I N K _ M A X _ P C _ L I N K _ M A X M A X _ C A N O N _ P C _ M A X _ C A N O N M A X _ I N P U T _ P C _ M A X _ I N P U T N A M E _ M A X n u l l _ P C _ N A M E _ M A X P A T H _ M A X n u l l _ P C _ P A T H _ M A X P I P E _ B U F _ P C _ P I P E _ B U F _ P O S I X _ C H O W N _ R E S T R I C T E D c h o w n _ P C _ C H O W N _ R E S T R I C T E D _ P O S I X _ N O _ T R U N C N A M E _ M A X _ P C _ N O _ T R U N C _ P O S I X _ V D I S A B L E _ P C _ V D I S A B L E (1) n a m e 2-5 3 1
2 6 U N I X e r r o r E I N VA L (2) M A X 1 2 n a m e n a m e_ P C _ P I P E _ B U F ( O ) 1 e r r n o (3) _ S C _ C L K _ T C K t i m e s 8. 15 (4) _ S C _ V E R S I O N 4 2 1 9 8 8 0 8 L 1 9 9 0 0 9 L (5) _ S C _ X O P E N _ V E R S I O N X P G 3 (6) _SC_JOB_CONTROL _ S C _ S AV E D _ I D S s y s c o n f 1 e r r n o < u n i s t d. h > (7) _ P C _ C H O W N _ R E S T R I C T E D _ P C _ N O _ T R U N C 1 ( e r r n o ) p a t h n a m e f i l e d e s (8) _ P C _ V D I S A B L E 1 e r r n o p a t h n a m e f i l e d e s 11-6 2-1 2-1 s y s c o n f p a t h c o n f
2 U N I X 27 argv[1], _PC_CHOWN_RESTRICTED); P O S I X. 1 IEEE Std.1003.1-1988 2-6 2-1 4. 14 SVR4 S5 V 7 V U F S S V R 4 2-6 SunOS 4.1.1 S5 filesys S V R 4 UFS filesys 4. 3 + B S D A R G _ M A X 1 048 576 5 120 5 120 20 480 C H I L D _ M A X 133 30 30 40 60 100 100 60 N G R O U P S _ M A X 16 16 16 16 O P E N _ M A X 64 64 64 64 _ P O S I X _ J O B _ C O N T R O L 1 1 1 1 _ P O S I X _ S A V E D _ I D S 1 1 1 _ P O S I X _ V E R S I O N 198 808 198 808 198 808 198 808 M A X _ C A N O N 256 256 256 255 M A X _ I N P U T 256 512 512 255 _ P O S I X _ V D I S A B L E 0 0 0 255 L I N K _ M A X 32 767 1 000 1 000 32 767
2 8 U N I X SunOS 4.1.1 S5 filesys S V R 4 UFS filesys 4. 3 + B S D N A M E _ M A X 255 14 255 255 P A T H _ M A X 1 024 1 024 1 024 1 024 P I P E _ B U F 4 096 5 120 5 120 512 _ P O S I X _ N O _ T R U N C 1 1 1 _ P O S I X _ C H O W N _ R E S T R I C T E D 1 1 2.5.5 FIPS 151-1 FIPS 151-1 ( 2. 2. 4 ) P O S I X. 1 P O S I X. 1 _POSIX_JOB_CONTROL, _POSIX_SAVED_IDS, _POSIX_ NO_TRUNC, _POSIX_CHOWN_RESTRICTED _ P O S I X _ V D I S A B L E NGROUPS_MAX 8 I D I D 4. 6 r e a d w r i t e 10. 5 s h e l l H O M E L O G N A M E P O S I X F I P S 2.5.6 2-7 _ S C _ s y s c o n f _ P C _ p a t h c o n f f p a t h c o n f 2-3 13 P O S I X. 1 2-7 2-7 A R G _ M A X < l i m i t s. h > _ S C _ A R G _ M A X _ P O S I X _ A R G _M A X=4 096 C H A R _ B I T < l i m i t s. h > 8 C H A R _ M A X < l i m i t s. h > 127 C H A R _ M I N < l i m i t s. h > 0 C H I L D _ M A X < l i m i t s. h > _ S C _ C H I L D _ M A X _ P O S I X _ C H I L D _ M A X =6 _ S C _ C L K _ T C K F O P E N _ M A X < s t d i o. h > 8 I N T _ M A X < l i m i t s. h > 32 767 I N T _ M I N < l i m i t s. h > 32 767 L I N K _ M A X < l i m i t s. h > _ P C _ L I N K _ M A X _ P O S I X _ L I N K _M A X=8 L O N G _ M A X < l i m i t s. h > 2 147 483 647
2 U N I X 29 L O N G _ M I N < l i m i t s. h > 2 147 483 647 M A X _ C A N O N < l i m i t s. h > _ P C _ M A X _ C A N O N _ P O S I X _ M A X _ C A N O N =2 55 M A X _ I N P U T < l i m i t s. h > _ P C _ M A X _ I N P U T _ P O S I X _ M A X _ I N P U T =2 55 M B _ L E N _ M A X < l i m i t s. h > N A M E _ M A X < l i m i t s. h > _ P C _ N A M E _ M A X _ P O S I X _ N A M E _M A X=1 4 N G R O U P S _ M A X < l i m i t s. h > _SC_NGROUPS_MAX _ P O S I X _ N G R O U P S _ M A X =0 N L _ A R G M A X < l i m i t s. h > 9 N L _ L A N G M A X < l i m i t s. h > 14 N L _ M S G M A X < l i m i t s. h > 32 767 N L _ N M A X < l i m i t s. h > N L _ S E T M A X < l i m i t s. h > 255 N L _ T E X T M A X < l i m i t s. h > 255 N Z E R O < l i m i t s. h > 20 O P E N _ M A X < l i m i t s. h > _ S C _ O P E N _ M A X _ P O S I X _ O P E N _M A X=1 6 P A S S _ M A X < l i m i t s. h > _ S C _ P A S S _ M A X 8 P A T H _ M A X < l i m i t s. h > _ P C _ P A T H _ M A X _ P O S I X _ P A T H _M A X=2 55 P I P E _ B U F < l i m i t s. h > _ P C _ P I P E _ B U F _ P O S I X _ P I P E _ B U F =5 12 S C H A R _ M A X < l i m i t s. h > 127 S C H A R _ M I N < l i m i t s. h > 1 27 S H R T _ M A X < l i m i t s. h > 32 767 S H R T _ M I N < l i m i t s. h > 32 767 S S I Z E _ M A X < l i m i t s. h > _ P O S I X _ S S I Z E _M A X=3 2, 767 S T R E A M _ M A X < l i m i t s. h > _ S C _ S T R E A M _ M A X _ P O S I X _ S T R E A M _ M A X =8 T M P _ M A X < s t d i o. h > 10, 000 T Z N A M E _ M A X < l i m i t s. h > _SC_TZNAME_MAX _ P O S I X _ T Z N A M E _MAX= 3 U C H A R _ M A X < l i m i t s. h > 255 U I N T _ M A X < l i m i t s. h > 65 535 U L O N G _ M A X < l i m i t s. h > 4 294 967 295 U S H R T _ M A X < l i m i t s. h > 65 535 _ P O S I X _ C H O W N _ R E S T R I C T E D < u n i s t d. h > _ P C _ C H O W N _ R E S T R I C T E D _ P O S I X _ J O B _ C O N T R O L < u n i s t d. h > _ S C _ J O B _ C O N T R O L _ P O S I X _ N O _ T R U N C < u n i s t d. h > _ P C _ N O _ T R U N C _ P O S I X _ S A V E D _ I D S < u n i s t d. h > _ S C _ S A V E D _ I D S _ P O S I X _ V D I S A B L E < u n i s t d. h > _ P C _ V D I S A B L E _ P O S I X _ V E R S I O N < u n i s t d. h > _ S C _ V E R S I O N _ X O P E N _ V E R S I O N < u n i s t d. h > _ S C _ X O P E N _ V E R S I O N 2.5.7 2-7 ( o p t i o n a l ) M A X P I P E _ B U F < l i m i t s. h >
3 0 U N I X 1. 256 5 12 1 024 I / O B U F S I Z 4. 3 B S D < s y s / p a r a m. h > M A X PAT H L E N 4. 3 B S D P O S I X. 1 PAT H _ M A X 2-2 < l i m i t s. h > PAT H _ M A X, p a t h c o n f p a t h c o n f 1 p a t h c o n f PAT H _ M A X m a l l o c + 1 n u l l PAT H _ M A X g e t c w d 4. 22 e r r n o E R A N G E r e a l l o c ( 7. 8 4. 18 ) g e t c w d 2-2
2 U N I X 31 2. ( ) #include <sys/param.h> for (i = 0; i < NOFILE; i++) c l o s e ( i ); < s y s / p a r a m. h > N O F I L E < s t d i o. h > _ N F I L E 20 P O S I X. 1 O P E N _ M A X #include <unistd.h> for (i = 0; i < sysconf(_sc_open_max); i++) c l o s e ( i ); O P E N _ M A X s y s c o n f 1 f o r ( 256 ) 2-3 2-3 c l o s e c l o s e E B A D F 9 10 9 10 d u p 3. 12 O P E N _ M A X
3 2 U N I X S V R 4 4. 3 + B S D g e t r l i m i t ( 2 ) 7. 11 4. 3 + B S D g e t d t a b l e s i z e ( 2 ) O P E N _ M A X P O S I X S V R 4 4. 3 + B S D setrlimit (2) C Shell l i m i t Bourne shell K o r nsh e l l u l i m i t 2-3 s y s c o n f 2.6 P O S I X. 1 X P G 3 P O S I X. 1 X P G 3 P O S I X _ P O S I X _ S O U R C E P O S I X. 1 _ P O S I X _ S O U R C E _ X O P E N _ S O U R C E f e a t u r e test macro c c cc -D_POSIX_SOURCE file.c C P O S I X. 1 #define _POSIX_SOURCE 1 STDC ANSI C ANSI C ANSI C #ifdef _ S T D C void *myfunc(const char *, int); # e l s e void *myfunc(); # e n d i f ANSI C ( ) 2.7 U N I X C 16 8 8 256 S V R 4 3 2 14 18 < s y s / t y p e s. h >
2 U N I X 33 primitive system data type C t y p e d e f _t 2-8 2-8 c a d d r _ t c l o c k _ t c o m p _ t d e v _ t f d _ s e t f p o s _ t g i d _ t i n o _ t m o d e _ t n 1 i n k _ t o f f _ t p i d _ t p t r d i f f _ t r 1 i m _ t s i g _ a t o m i c _ t s i g s e t _ t s i z e _ t s s i z e _ t t i m e _ t u i d _ t w c h a r _ t 12. 9 1. 10 8. 13 4. 23 12. 5. 1 5. 10 I D i 4. 14 4. 5 4. 10 lseek, 3.6 I D I D 8. 2 9. 4 7. 11 10. 15 10. 11 3. 7 read, write, 3.7 1. 10 I D 2.8 ANSI C P O S I X. 1 ( X P G 3 F I P S P O S I X. 1 ) ANSI C c l o c k C P U c l o c k _ t < t i m e. h > C L O C K S _ P E R _ S E C P O S I X. 1 t i m e s C P U c l o c k _ t IEEE Std.1003.1-1988 C L K _ T C K c l o c k _ t 1990 POSIX.1 C L K _ T C K s y s c o n f t i m e s ANSI C P O S I X. 1 ( c l o c k _ t ) S V R 4 c l o c k ( C L O C K _ P E R _ S E C ) C L K _ T C K 5 0 6 0 1 00 ( C P U )
3 4 U N I X ANSI C ANSI C P O S I X. 1 P O S I X C P O S I X C P O S I X ANSI C s i g n a l S V R 4 s i g n a l ( ANSI C U N I X ) POSIX.1 sigaction 10 s i g n a l 2.9 U N I X ANSI C P O S I X X P G 3 S V R 4 4. 3 + B S D 2. 1 2. 7 size_t 6 6 ANSI C 2. 2