다음을 통해 공유


_write

파일에 데이터를 씁니다.

int _write(    int fd,    const void *buffer,    unsigned int count  );

매개 변수

  • fd
    데이터를 쓸 파일의 파일 설명자입니다.

  • buffer
    쓸 데이터입니다.

  • count
    바이트 수입니다.

반환 값

성공하면 _write는 실제로 쓴 바이트 수를 반환합니다. 디스크에 남아 있는 실제 공간이 함수가 디스크에 쓰려는 버퍼 크기보다 작으면 _write에 실패하고 버퍼의 어떤 내용도 디스크로 플러시하지 않습니다. 반환 값 –1은 오류를 나타냅니다. 잘못된 매개 변수가 전달되면 이 함수는 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용한 경우 함수는 -1을 반환하고 errno는 다음 3개 값 중 하나로 설정됩니다. EBADF는 파일 설명자가 잘못되었거나 파일이 쓸 수 있도록 열리지 않았음을 나타내고, ENOSPC는 장치에 작업을 실행하는 데 충분한 공간이 없음을 나타내고, EINVAL은 buffer가 null 포인터이거나 count의 홀수 바이트가 유니코드 모드에서 파일에 쓰도록 전달되었음을 나타냅니다.

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

파일이 텍스트 모드에서 열리면 각 줄 바꿈 문자는 출력에서 캐리지 리턴 - 줄 바꿈 쌍으로 바뀝니다. 바뀌더라도 반환 값에는 영향을 미치지 않습니다.

파일이 유니코드 변환 모드에서 열리는 경우(예: _O_WTEXT, _O_U16TEXT 또는 _O_U8TEXT가 포함된 모드 매개 변수와 _open 또는 _sopen을 사용하여 fd를 연 경우, ccs=UNICODE, ccs=UTF-16LE 또는 ccs=UTF-8이 포함된 모드 매개 변수와 fopen을 사용하여 연 경우나 _setmode를 사용하여 모드를 유니코드 변환 모드로 변경한 경우) buffer는 UTF-16 데이터가 포함된 wchar_t의 배열에 대한 포인터로 해석됩니다. 이 모드에서 홀수 바이트를 쓰려고 하면 매개 변수 유효성 검사 오류가 발생합니다.

설명

_write 함수는 buffer에서 fd와 연결된 파일로 count 바이트를 씁니다. 쓰기 작업은 지정된 파일과 연결된 파일 포인터(있는 경우)의 현재 위치에서 시작됩니다. 추가의 목적으로 파일을 연 경우 쓰기 작업은 파일의 현재 끝에서 시작됩니다. 쓰기 작업 후 파일 포인터는 실제로 쓴 바이트 수만큼 증가됩니다.

텍스트 모드에서 연 파일에 쓰는 경우 _write는 Ctrl+Z 문자를 논리적 파일 끝(EOF)으로 처리합니다. 장치에 쓰는 경우 _write는 버퍼의 Ctrl+Z 문자를 출력 종결자로 처리합니다.

요구 사항

루틴

필수 헤더

_write

<io.h>

호환성에 대한 자세한 내용은 호환성을 참조하십시오.

예제

// crt__write.c
// 
// This program opens a file for output and uses _write to write
// some bytes to the file.

#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <share.h>

char buffer[] = "This is a test of '_write' function";

int main( void )
{
   int         fileHandle = 0;
   unsigned    bytesWritten = 0;

   if ( _sopen_s(&fileHandle, "write.o", _O_RDWR | _O_CREAT,
                  _SH_DENYNO, _S_IREAD | _S_IWRITE) )
      return -1;

   if (( bytesWritten = _write( fileHandle, buffer, sizeof( buffer ))) == -1 )
   {
      switch(errno)
      {
         case EBADF:
            perror("Bad file descriptor!");
            break;
         case ENOSPC:
            perror("No space left on device!");
            break;
         case EINVAL:
            perror("Invalid parameter: buffer was NULL!");
            break;
         default:
            // An unrelated error occured 
            perror("Unexpected error!");
      }
   }
   else
   {
      printf_s( "Wrote %u bytes to file.\n", bytesWritten );
   }
   _close( fileHandle );
}
  

참고 항목

참조

하위 수준 I/O

fwrite

_open, _wopen

_read

_setmode