FOPEN 3 2002-01-03
目录
- NAME fopen, fdopen, freopen
- SYNOPSIS 总览
- DESCRIPTION 描述
- RETURN VALUE 返回值
- ERRORS .TP .B EINVAL 为 .BR fopen , .BR fdopen , 或 .B freopen 提供的参数 .I mode 非法。 .PP 函数 .BR fopen , .B fdopen 和 .B freopen 也有可能失败并置 .I errno 为 .BR malloc (3) 指定的值。 .PP 函数 .B fopen 也有可能失败并置 .I errno 为 .BR open (2) 指定的值。 .PP 函数 .B fdopen 也有可能失败并置 .I errno 为 .BR fcntl (2) 指定的值。 .PP 函数 .B freopen 也有可能失败并置 .I errno 为 .BR open (2), .BR fclose (3) 和 .BR fflush (3) 指定的值。 .SH
- SEE ALSO 参见
- 跋
FOPEN
NAMESYNOPSIS æ»è§
DESCRIPTION æè¿°
RETURN VALUE è¿åå¼
ERRORS
CONFORMING TO æ ååè
SEE ALSO åè§
è·
NAME
fopen, fdopen, freopen - æå¼æµ
SYNOPSIS æ»è§
#include <stdio.h>
FILE
*fopen(const char *path, const char
*mode);
FILE *fdopen(int fildes, const char
*mode);
FILE *freopen(const char *path, const char
*mode, FILE *stream);
DESCRIPTION æè¿°
彿° fopen æå¼æä»¶å为 path æåçå符串çæä»¶ï¼å°ä¸ä¸ªæµä¸å®å³èã
åæ° mode æåä¸ä¸ªå符串ï¼ä»¥ä¸ååºåä¹ä¸å¼å§ (åºåä¹åå¯ä»¥æéå çå符):
|
r |
æå¼ææ¬æä»¶ï¼ç¨äºè¯»ãæµè¢«å®ä½äºæä»¶çå¼å§ã | ||
|
r+ |
æå¼ææ¬æä»¶ï¼ç¨äºè¯»åãæµè¢«å®ä½äºæä»¶çå¼å§ã | ||
|
w |
å°æä»¶é¿åº¦æªæä¸ºé¶ï¼æèåå»ºææ¬æä»¶ï¼ç¨äºåãæµè¢«å®ä½äºæä»¶çå¼å§ã | ||
|
w+ |
æå¼æä»¶ï¼ç¨äºè¯»åã妿æä»¶ä¸åå¨å°±å建å®ï¼å¦åå°æªæ- å®ãæµè¢«å®ä½äºæä»¶çå¼å§ã | ||
|
a |
æå¼æä»¶ï¼ç¨äºè¿½å (卿件尾å)ã妿æä»¶ä¸å- å¨å°±å建å®ãæµè¢«å®ä½äºæä»¶çæ«å°¾ã | ||
|
a+ |
æå¼æä»¶ï¼ç¨äºè¿½å (卿件尾å)ã妿æä»¶ä¸å- å¨å°±å建å®ã读æä»¶çåå§ä½ç½®æ¯æä»¶çå¼å§ï¼ä½æ¯è¾åºæ»æ¯è¢«è¿½åå°æä»¶çæ«å°¾ã |
å符串 mode ä¹å¯ä»¥åå«åæ¯ ‘‘b’’ ä½ä¸ºæåä¸ä¸ªå- ç¬¦ï¼æèæå¥å°ä¸é¢æå°çä»»ä½åå符çå符串ç两个å符ä¸é´ãè¿æ ·åªæ¯ä¸ºäºå ANSI X3.159-1989 (‘‘ANSI C’’) æ åä¸¥æ ¼ä¿æå¼å®¹ï¼æ²¡æå®éçææï¼å¨ææçéµå¾ª POSIX çç³»ç»ä¸ï¼‘‘b’’ é½è¢«å¿½ç¥ï¼åæ¬ Linuxã(å¶ä»ç³»ç»å¯è½å°ææ¬æä»¶åäºè¿å¶æä»¶åºå«å¯¹å¾ï¼å¦æå¨è¿è¡äºè¿å¶æä»¶ç I/Oï¼é£ä¹æ·»å ‘‘b’’ æ¯ä¸ªå¥½ä¸»æï¼å ä¸ºä½ çç¨åºå¯è½ä¼è¢«ç§»æ¤å°é Unix ç¯å¢ä¸ã)
任使°å»ºçæä»¶å°å·ææ¨¡å¼ S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH (0666)ï¼ç¶å以è¿ç¨çæ©ç å¼ umask å ä»¥ä¿®æ¹ (åè§ umask(2)) ã
å¨è¯»/åæµä¸è¿è¡ç读ååæä½å¯ä»¥ä»¥ä»»æçé¡ºåºæ··å使ç¨ã注æ ANSI C è¦æ±æä»¶å®ä½å½æ°åªè½æå¥å¨è¾åºåè¾å¥ä¹é´ï¼é¤éè¾å¥æä½éå°äºæä»¶ç»æç¬¦ã(å¦ææ²¡æéå°è¿ç§æåµï¼é£ä¹è¯»åæ»æ¯è½è¿åé¤äºæè¿åå¥å容ä¹å¤çç»æã) å æ¤ï¼æå¥½ (å¨ Linux ä¸ææ¶æ¯å¿é¡»ç) å¨å¯¹è¿æ ·çæµè¿è¡çåå读æä½ä¹é´å å¥ä¸ä¸ª fseek ææ¯ fgetpos æä½ãè¿ä¸ªæä½å¯ä»¥æ¯å¯¹æ¾å¼çå®ä½çè°ç¨ (ä¾å¦å¨ fseek(..., 0L, SEEK_CUR) ä¸é£æ ·)ï¼å©ç¨åæ¶åççå¯ä½ç¨ã(?)
ä»¥è¿½å æ¹å¼æå¼æä»¶ (以 a ä½ä¸º mode ç第ä¸ä¸ªå符) å°ä½¿å¾ææåç»- ç对è¿ä¸ªæµçåæä½åç卿件æ«å°¾ï¼å°±å¥½åå¨åä¹åè°ç¨äº
fseek(stream,0,SEEK_END);
䏿 ·ã
彿° fdopen å°ä¸ä¸ªæµå³èå°å·²åå¨çæä»¶æè¿°ç¬¦ï¼ fildes. æµçæ¨¡å¼ mode (åå¼ä¸º "r", "r+", "w", "w+", "a", "a+" ä¹ä¸) å¿é¡»ä¸æä»¶æè¿°ç¬¦çæ¨¡å¼æ³å¹éãæ°çæµçå®ä½æ è¯è¢«è®¾ç½®ä¸º fildes åæçå¼ï¼é误åæä»¶ç»ææ 记被æ¸é¤ãæ¨¡å¼ "w" æè "w+" ä¸ä¼æªæ- æä»¶ãæä»¶æè¿°ç¬¦ä¸ä¼è¢«å¤å¶ï¼å¨å³éç± fdopen åå»ºçæµæ¶ï¼ä¹ä¸ä¼è¢«å³é- ã对å±äº«ååå¯¹è±¡å®æ½ fdopen çç»ææ¯æªå®ä¹çã
彿° freopen æå¼å称为 path æåçå符串çæä»¶ï¼å°å®ä¸ stream æåçæµå³èãåå§çæµ (妿åå¨çè¯) 被å³éãåæ° mode ä¸å¨å½æ° fopen ä¸- ç¨æ³ä¸è´ã彿° freopen 主è¦çç¨å¤æ¯æ¹å䏿 åææ¬æµ (stderr, stdin, æ stdout) ç¸å³èçæä»¶
RETURN VALUE è¿åå¼
妿æåæ§è¡äº fopen, fdopen å freopen å°è¿åä¸ä¸ªæåæä»¶å¯¹è±¡ FILE çæéãå¦åï¼å°è¿å NULL å¹¶å°è®¾ç½®å¨å±åé errno ç弿¥æç¤ºé误åçã
ERRORS
|
EINVAL |
为 fopen, fdopen, æ freopen æä¾çåæ° mode éæ³ã |
彿° fopen, fdopen å freopen 乿å¯è½å¤±è´¥å¹¶ç½® errno 为 malloc(3) æå®çå¼ã
彿° fopen 乿å¯è½å¤±è´¥å¹¶ç½® errno 为 open(2) æå®çå¼ã
彿° fdopen 乿å¯è½å¤±è´¥å¹¶ç½® errno 为 fcntl(2) æå®çå¼ã
彿° freopen 乿å¯è½å¤±è´¥å¹¶ç½® errno 为 open(2), fclose(3) å fflush(3) æå®çå¼ã
CONFORMING TO æ ååè
彿° fopen å freopen éµå¾ª ANSI X3.159-1989 (‘‘ANSI C’’) æ åã彿° fdopen éµå¾ª IEEE Std1003.1-1988 (‘‘POSIX.1’’) æ åã
SEE ALSO åè§
open(2), fclose(3), fileno(3)
è·
æ¬é¡µé¢ä¸æçç±ä¸æ
man
æå页计åæä¾ã
䏿 man
æå页计åï¼https://github.com/man-pages-zh/manpages-zh