다음을 통해 공유


_fsopen, _wfsopen

파일 공유와 함께 스트림을 엽니다.

FILE *_fsopen( 
   const char *filename,
   const char *mode,
   int shflag 
);
FILE *_wfsopen( 
   const wchar_t *filename,
   const wchar_t *mode,
   int shflag 
);

매개 변수

  • filename
    열 파일의 이름입니다.

  • mode
    허용 되는 액세스 유형

  • shflag
    허용된 공유의 유형입니다.

반환 값

각 함수는 스트림에 대한 포인터를 반환합니다. null 포인터 값은 오류를 나타냅니다. filename 또는 mode가 NULL 또는 빈 문자열인 경우 이러한 함수는 매개 변수 유효성 검사에 설명된 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용된 경우, 이러한 함수는 NULL를 반환하고 errno를 EINVAL로 설정합니다.

이러한 반환 코드 및 기타 오류 코드에 대한 자세한 내용은 _doserrno, errno, _sys_errlist 및 _sys_nerr을 참조하십시오.

설명

_fsopen 함수는 파일을 filename에 지정된 파일을 스트림으로 열고 모드 및 shflag 인수에 정의된 대로 파일의 다음 공유 읽기 또는 쓰기를 준비합니다. _wfsopen_fsopen의 와이드 문자 버전이며, _wfsopen에 대한 filename 및 mode 인수는 와이드 문자 문자열입니다. _wfsopen_fsopen 는 동일하게 작동합니다.

mode 문자열은 아래의 표와 같이 파일에 대해 요청되는 액세스 형식을 지정합니다.

용어

정의

"r"

읽기 위해 엽니다. 파일이 없거나 찾을 수 없는 경우 _fsopen 호출이 실패합니다.

"w"

쓰기 위해 빈 파일을 엽니다. 지정한 파일이 있으면 이 파일의 내용은 삭제됩니다.

"a"

파일의 끝에 쓰기 위해 엽니다(추가). 파일이 존재하지 않는 경우 파일을 먼저 만듭니다.

"r+"

읽고 쓰기 위해 엽니다. (파일이 존재 해야 합니다.)

"w+"

읽고 쓰기 위해 빈 파일을 엽니다. 지정한 파일이 있으면 이 파일의 내용은 삭제됩니다.

"a+"

읽기 및 추가로 엽니다. 파일이 존재하지 않는 경우 파일을 먼저 만듭니다.

이 "w" 와 "w+" 형식은 기존 파일을 삭제할 수도 있으므로 신중하게 사용합니다.

"a" 또는 "a+" 액세스 형식을 사용하여 파일을 연 경우 모든 쓰기 작업은 파일의 끝에서 수행됩니다. fseek 또는 rewind를 사용하여 파일 포인터의 위치를 변경할 수 있지만, 파일 포인터는 쓰기 작업을 수행하기 전에 항상 파일 끝으로 다시 이동합니다. 따라서 기존 데이터를 덮어쓸 수 없습니다. "r+", "w+" 또는 "a+" 액세스 형식을 지정한 경우 읽기와 쓰기가 모두 허용됩니다. 즉, 파일이 업데이트용으로 열립니다. 그러나 읽기 및 쓰기를 전환할 때 반드시 fsetpos, fseek, 또는 rewind 작업 사이에 있어야 합니다. 원하는 경우, fsetpos 또는 fseek 작업에 대해 현재 위지를 지정할 수 있습니다. 위의 값 이외에도 아래의 문자중 하나가 새 줄에 대한 변환 모드를 지정하기 위해서 및 파일 관리를 위해서 mode에 포함할 수 있습니다.

용어

정의

t

텍스트(변환됨) 모드에서 파일을 엽니다. 이 모드에서 캐리지 리턴/줄 바꿈 (CR-LF) 조합은 입력에서 한 줄 바꿈(LF)으로 변환되고, 줄 바꿈 문자는 출력에서 캐리지 리턴/줄 바꿈 조합으로 변환됩니다. 또한, CTRL + Z는 입력에서 파일 끝 문자로 해석 됩니다. 읽기/쓰기를 위해 연 파일에서 _fsopen은 파일 끝에서 Ctrl+Z를 확인하여 제거합니다(가능한 경우). fseekftell을 사용하여 Ctrl+Z로 끝나는 파일 내에서 이동하면 파일의 끝 부분에서 fseek가 제대로 동작하지 않을 수 있으므로 이 작업을 수행합니다.

b

(변환 되지 않은) 이진 모드에서 파일을 엽니다. 위의 변환은 표시되지 않습니다.

S

캐싱이 디스크에서 순차적 액세스를 위해 최적화되며 이에 제한되지 않습니다.

R

캐싱이 디스크에서 임의 액세스를 위해 최적화되며 이에 제한되지 않습니다.

T

파일을 임시 파일로 지정합니다. 가능하면 디스크에 플러시되지 않습니다.

D

파일을 임시 파일로 지정합니다. 마지막 파일 포인터를 닫을 때 삭제됩니다.

t 또는 b가 mode에 지정되지 않은 경우, 변환 모드는 기본 모드 변수 _fmode로 정의됩니다. t 또는 b가 인수에 접두어로 추가되면 이 함수는 실행되지 못하고 NULL을 반환합니다. 텍스트 및 이진 모드의 논의는 텍스트 및 이진 모드 파일 I/O 를 참조하십시오.

인수 shflag 는 Share.h에 정의 된 매니페스트 상수 중 하나로 구성 된 상수 식입니다.

용어

정의

_SH_COMPAT

16 비트 응용 프로그램을 위한 호환 모드를 설정합니다.

_SH_DENYNO

읽기 및 쓰기 액세스 권한

_SH_DENYRD

파일에 대한 읽기 액세스를 거부합니다.

_SH_DENYRW

파일에 대한 읽기 및 쓰기 액세스를 거부합니다.

_SH_DENYWR

파일에 대한 쓰기 액세스를 거부합니다.

제네릭 텍스트 라우팅 매핑

Tchar.h 루틴

_UNICODE 및 _MBCS 정의되지 않음

_MBCS 정의됨

_UNICODE 정의됨

_tfsopen

_fsopen

_fsopen

_wfsopen

요구 사항

Function

필수 헤더

선택적 헤더

_fsopen

<stdio.h>

<share.h>

shflag 매개 변수에 대한 매니페스트 상수입니다.

_wfsopen

<stdio.h> 또는 <wchar.h>

<share.h>

shflag 매개 변수에 대한 매니페스트 상수입니다.

예제

// crt_fsopen.c

#include <stdio.h>
#include <stdlib.h>
#include <share.h>

int main( void )
{
   FILE *stream;

   // Open output file for writing. Using _fsopen allows us to
   // ensure that no one else writes to the file while we are
   // writing to it.
    //
   if( (stream = _fsopen( "outfile", "wt", _SH_DENYWR )) != NULL )
   {
      fprintf( stream, "No one else in the network can write "
                       "to this file until we are done.\n" );
      fclose( stream );
   }
   // Now others can write to the file while we read it.
   system( "type outfile" );
}
  

해당 .NET Framework 항목

참고 항목

참조

스트림 I/O

fclose, _fcloseall

_fdopen, _wfdopen

ferror

_fileno

fopen, _wfopen

freopen, _wfreopen

_open, _wopen

_setmode

_sopen, _wsopen