본문 바로가기

코드쓰기 카테고리/라 피신

터미널에서 write 메뉴얼 찾는 법은 [man pwrite]

출처 : https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/write.2.html

 

[NAME]

pwrite , write , writev- 출력

 

[라이브러리]

표준 C 라이브러리 (libc, -lc)

 

[시놉시스]

#include <unistd.h>

ssize _ t pwrite ( int fildes , const void * buf , size _ t nbyte , off _ t offset );

ssize _ t write ( int fildes , const void * buf , size _ t nbyte );


#include <sys / uio.h>

ssize _ t writev ( int fildes , const struct iovec * iov , int iovcnt );

 

[DESCRIPTION]

write ()는 nbyte 의 데이터를 디스크립터 fildes 버퍼로부터이 가리키는 BUF . writev () 수행 동일한 조치이지만 iovcnt 버퍼 에서 출력 데이터를 수집합니다.iov 배열 의 멤버에 의해 지정됩니다 : iov [0], iov [1], ..., iov [iovcnt-1]. pwrite ()는 동일한 기능을 수행하지만 파일 포인터를 수정하지 않고 파일에서 지정된 위치. 들면 writev는 ()를 iovec 구조는 다음과 같이 정의된다 : struct iovec { char * iov_base; / * 기본 주소. * / size_t iov_len; /* 길이. * / }; 각 iovec 항목은 메모리 메모리에서 데이터를 기록 할 영역의 기본 주소와 길이를 지정합니다 . writev ()는 항상 완전한 완료를 작성합니다 다음으로 진행하기 전에 빈 공간. 탐색 할 수있는 객체에서 write ()는 다음 위치에서 시작합니다.fildes 와 관련된 포인터 는 lseek (2)를 참조하십시오 . write () 에서 리턴되면 포인터는 바이트 수만큼 증가합니다. 쓴. 검색 할 수없는 객체는 항상 현재로부터 쓰기 위치. 그러한 객체와 관련된 포인터의 값은 찾으시는 주소가 없습니다. 실제 사용자가 수퍼 유저가 아닌 경우 write ()는 set-user- id set-userid를 지 웁니다. 파일의 id 비트. 이것은 사용자에 의한 시스템 보안 침투를 방지합니다 누가 슈퍼 유저가 소유 한 쓰기 가능한 set-user-id 파일을``캡처 ''합니다. 소켓과 같은 대상체에 비 차단 I / O를 사용하는 경우 흐름 제어를 위해 write () 및 writev ()는보다 적은 바이트를 쓸 수 있습니다. 요청; 반환 값을 기록하고 나머지 작업 작업을 수행해야합니다. 가능하면 다시 시도해야합니다.

 

[반환값]

성공적으로 완료되면 기록 된 바이트 수가 리턴됨. 그렇지 않으면 -1이 반환되고 전역 변수 errno 는 오류를 나타내도록 설정합니다.

 

[에러]

write(), writev는 () 및 pwrite () 시스템 호출이 실패하고 파일 다음과 같은 경우 포인터가 변경되지 않습니다.

[EDQUOT] 파일 시스템에서 사용자의 디스크 블록 할당량 파일이 포함되어 있습니다.

[EFAULT] iov일부 또는 파일 포인트에 기록 할 데이터 프로세스의 할당 된 주소 공간 외부

[EINVAL] fildes 와 관련된 포인터 가 음수입니다. 쓰기 ()와 PWRITE () 시스템 호출이 실패하고 파일 포인터의 의지 다음과 같은 경우 변경되지 않은 상태로 유지합니다.

[EAGAIN] 파일이 비 블로킹 I / O로 표시되었으며 데이터가 없습니다. 즉시 쓸 수 있습니다.

[EBADF] fildes 는 쓰기 를 위해 열린 유효한 파일 디스크립터가 아닙니다 . 쓰기. 노래.

[ECONNRESET] 연결 되지 않은 소켓에서 쓰기가 시도되었습니다 . 연결되었습니다. 절충.

[EFBIG] 파일을 초과하여 파일을 쓰려고합니다. 프로세스의 파일 크기 제한 또는 최대 파일 크기.

[EFBIG] 파일이 일반 파일이고 nbyte 가 0보다 큽니다. 시작 위치가 크거나 같습니다 열린 파일에 설정된 오프셋 최대 값fildes 와 관련된 설명 .

[EINTR] 신호가 완료 되기 전에 쓰기가 중단 됩니다. 완료되었습니다. 주름을 잡았다.

[EIO] 읽거나 쓰는 중에 I / O 오류가 발생합니다 파일 시스템.

[ENETDOWN] 소켓 및 로컬 네트워크에서 쓰기가 시도되었습니다. 대상에 도달하는 데 사용 된 인터페이스가 다운되었습니다.

[ENETUNREACH] 소켓에서 쓰기가 시도되고 네트워크가 존재합니다.

[ENOSPC] 파일 시스템에 남은 여유 공간이 없습니다 파일을 포함합니다.

[ENXIO] 존재하지 않는 장치 또는 요청이 기기의 기능을 벗어났습니다.

[EPIPE] 열려 있지 않은 파이프에 쓰려고합니다. 모든 프로세스에서 읽습니다.

[EPIPE] 유형의 소켓에 쓰려고합니다. 피어 소켓에 연결되지 않은 SOCK_STREAM 쓰기 ()와 writev는 () 호출은 또한 다음과 같은 오류를 반환 할 수 있습니다 :

[EAGAIN] 아래의 EWOULDBLOCK을 참조하십시오.

[EWOULDBLOCK] 파일 디스크립터는 소켓 용이며 O_NON- BLOCK, O_NONBLOCK, 차단 및 쓰기 차단. 정확한 오류 코드 프로토콜에 따라 다르지만 EWOULDBLOCK이 더 일반적입니다 . 흔한. 월. 또한 writev ()는 다음 오류 중 하나를 반환 할 수 있습니다.

[EDESTADDRREQ] 더 이상 쓸 수없는 대상을 사용할 수 없습니다 connect (2) 가 가지고 있는 UNIX 도메인 데이터 그램 소켓 대상 주소를 설정하는 데 사용되었습니다.

[EINVAL] Iovcnt 가 0보다 작거나 같습니다. UIO_MAXIOV.

[EINVAL] iov 배열 의 iov _ len 값 중 하나가 음수 입니다. 부정. tive.

[EINVAL] iov 배열 에서 iov _ len 값 의 합이 오버 플로우 오버플로 32 비트 정수를 흐릅니다.

[ENOBUFS] 쓰기 를 할 때 mbuf 풀이 완전히 소진되었습니다. 소켓에 연결합니다. PWRITE () 호출은 또한 다음과 같은 오류를 반환 할 수 있습니다 :

[EINVAL] 지정된 파일 오프셋이 유효하지 않습니다.

[ESPIPE] 파일 기술자는 파이프, 소켓, 또는 선입 선출 (FIFO).

[LEGACY] 

#include <sys / types.h>  

#include <sys / uio.h>

#include <unistd.h>

이 포함 파일은 세 가지 기능 모두에 필요합니다.

 

[SEE ALSO] fcntl (2) , lseek (2) , open(2) , pipe(2) , select(2) , compat(5)

[STANDARDS]

write() 함수 호출은 ISO / IEC 9945-1에 부합 할 것으로 예상된다 : 1990 (``POSIX.1 ''). writev는 ()와 PWRITE은 () 함수가 적합 준수 양식을 X / Open Portability Guide Issue 4, Version 2 (``XPG4.2 '')로 제출하십시오.

[HISTORY]

PWRITE () 함수 호출은 AT & T 시스템 V.4 UNIX에서 나타났다. writev는 () 함수 호출은 4.2BSD에서 나타났다. write() 함수 호출 버전 6 AT & T UNIX에 나타났습니다.