리눅스 write 함수 예제

read() 데이터를 새 파일에 작성해야 합니다: 예를 들어 기본 물리적 미디어에 공간이 부족하거나 RLIMIT_FSIZE 리소스 제한이 발생하거나(setrlimit(2) 참조) 또는 호출이 있는 경우 작성된 바이트 수가 개수보다 적을 수 있습니다. 바이트 수를 적게 작성한 후 신호 처리기에 의해 중단되었습니다. (파이프(7)도 참조하십시오.) 비차단 쓰기를 지원하고 즉시 데이터를 받아들일 수 없는 파일 설명자(파이프 또는 FIFO 제외)에 쓰려고 할 때 쓰기 시스템 호출 인터페이스[1][2][3]는 POSIX 사양에 의해 표준화됩니다. 데이터는 쓰기 함수를 호출하여 파일에 기록됩니다. 함수 프로토타입은 : 소켓에서 쓰기를 시도했으며 네트워크에 대한 경로가 없습니다. 쓰기 시스템 호출은 호출자에서 지정한 바이트 단위로 프로그램에서 사용자가 선언한 버퍼에서 데이터를 기록한 다음 호출 프로세스에서 제공하는 파일에 씁니다. 대부분의 최신 운영 체제에서는 파일 시스템에 저장된 파일에 데이터를 작성해야 하는 프로그램은 System 호출 쓰기를 사용합니다. 파일은 열기 이전 호출에서 얻은 파일 설명자에 의해 식별됩니다. 개수가 0이고 fd가 일반 파일을 참조하는 경우 write() 아래 오류 중 하나가 감지되면 오류 상태를 반환할 수 있습니다. 오류가 감지되지 않으면 다른 영향을 주지 않고 0이 반환됩니다. 개수가 0이고 fd가 일반 파일이 아닌 다른 파일을 참조하면 결과가 지정되지 않습니다. pwrite() 함수는 파일 포인터를 변경하지 않고 지정된 위치에 쓰는 것을 제외하고는 write()와 동일합니다. pwrite()에 대한 처음 세 개의 인수는 쓰기()와 동일하며 파일 내부의 원하는 위치에 대한 네 번째 인수 오프셋이 추가됩니다.

작성할 수 있는 경우 적어도 하나의 바이트를 강제로 작성하려는 의도는 파이프에 공간이 있는 경우 각 쓰기가 진행되도록 하는 것입니다. 파이프가 비어 있으면 {PIPE_BUF} 바이트를 작성해야 합니다. 그렇지 않다면 적어도 어느 정도 진전이 있었을 것이다. 쓰기는 유닉스와 같은 운영 체제 커널에서 제공하는 가장 기본적인 루틴 중 하나입니다. 사용자가 선언한 버퍼의 데이터를 특정 장치(파일)에 기록합니다. 이는 시스템 호출을 직접 사용하여 프로그램에서 데이터를 출력하는 기본 방법입니다. 대상은 숫자 코드로 식별됩니다. 기록할 데이터(예: 텍스트 조각)는 포인터와 크기로 정의되며 바이트 수로 지정됩니다. fildes가 소켓을 참조하는 경우 write()는 플래그가 설정되지 않은 send()와 동일합니다. 파일 상태 플래그의 O_APPEND 플래그가 설정된 경우 파일 오프셋은 각 쓰기 전에 파일 오프셋이 파일 의 끝으로 설정되어야 하며 파일 오프셋을 변경하고 쓰기 작업을 변경하는 사이에 는 중간 파일 수정 작업이 발생하지 않습니다. GNU 이외의 시스템에 대한 프로그램의 이식성에 대해 우려하는 경우 파일 설명자가 스트림만큼 이식성이 크지 않다는 점에 유의해야 합니다.

ISO C를 실행하는 모든 시스템이 스트림을 지원할 것으로 예상할 수 있지만 GNU가 아닌 시스템은 파일 설명기를 전혀 지원하지 않거나 파일 설명자에서 작동하는 GNU 함수의 하위 집합만 구현할 수 있습니다. 그러나 GNU 라이브러리의 대부분의 파일 설명자 함수는 POSIX.1 표준에 포함됩니다. 일반 파일 또는 검색 할 수있는 다른 파일에서, 데이터의 실제 쓰기는 fildes와 관련된 파일 오프셋에 의해 표시된 파일의 위치에서 진행한다.