fdopen.c

来自「操作系统源代码」· C语言 代码 · 共 64 行

C
64
字号
/* * fdopen - convert a (UNIX) file descriptor into a FILE pointer *//* $Header: fdopen.c,v 1.4 91/02/22 16:32:05 ceriel Exp $ */#include	<stdlib.h>#include	"../stdio/loc_incl.h"#include	<stdio.h>FILE *fdopen(fd, mode)int fd;_CONST char *mode;{	register int i;	FILE *stream;	int flags = 0;	if (fd < 0) return (FILE *)NULL;	for (i = 0; __iotab[i] != 0 ; i++) 		if (i >= FOPEN_MAX-1)			return (FILE *)NULL;	switch(*mode++) {	case 'r':		flags |= _IOREAD | _IOREADING;		break;	case 'a':		flags |= _IOAPPEND;	case 'w':		flags |= _IOWRITE | _IOWRITING;		break;	default:		return (FILE *)NULL;	}	while(*mode) {		switch(*mode++) {		case 'b':			continue;		case '+':			flags |= _IOREAD | _IOWRITE;			continue;		/* The sequence may be followed by aditional characters */		default:			break;		}		break;	}	if ((stream = (FILE *) malloc(sizeof(FILE))) == NULL) {		return (FILE *)NULL;	}	if ((flags & _IOREAD) && (flags & _IOWRITE))		flags &= ~(_IOREADING | _IOWRITING);	stream->_count = 0;	stream->_fd = fd;	stream->_flags = flags;	stream->_buf = NULL;	__iotab[i] = stream;	return stream;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?