파일기술자가 가리키는 파일에 쓴다. 이 파일기술자는 open(2), socket(2) 등으로 얻을수 있다.
#include <unistd.h> ssize_t write(int fd, const void *buf, size_t count);
첫번째 아규먼트인 fd 는 열린파일 기술자이다. 이것은 보통 open(2), socket(2) 등으로 만들어지며, 때때로 pipe(2) 등으로 만들어지기도 한다.
두번째 아규먼트(:12)는 fd 로 쓸 데이타이며, count 는 fd 쓸 데이타의 크기이다.
성공할경우 쓰여진 바이트 만큼이 리턴된다. 0이면 쓰여진것이 없음을 나타내며, -1 일경우는 에러가 발생했을 경우이다. 에러가 발생했을경우에는 errno 에 적당한 값이 설정된다.
다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.
fd 가 유효한 파일 기술자가 아니거나 쓰여질수 없도록 열려있을경우
fd 가 쓰기에 적당하지 않은 객체와 연결되어 있을경우
buf 가 접근할 수 없는 주소 공간을 가리키고 있을때
fd 가 끝이 닫혀진 소켓이나 파이프(:12)에 연결되어 있을때. 쓰고 있는 프로세스(:12)가 SIGPIPE signal(:12)를 받았을때 발생한다.
fd 가 비봉쇄(O_NONBLOCK) 로 열렸을경우, 데이터를 쓰기 위해 fd 와 연결된 파이프나 소켓에 공간이 없을때, 발생한다. 봉쇄로 열렸을경우에는 연결된 파이프나 소켓에 공간이 있을때까지 봉쇄된다.
#include <fcntl.h> #include <unistd.h> #include <stdio.h> struct data { int age; char name[25]; }; int main() { int fd; int n; struct data mydata, readdata; fd = open("data.txt", O_CREAT|O_RDWR); if (fd == -1) { perror("open error : "); } mydata.age = 25; strcpy(mydata.name, "hello"); n = write(fd, (void *)&mydata, sizeof(mydata)); close(fd); }
Copyrights © - Joinc, All Rights Reserved. Inherited From - Yundream Rebranded By - Joonphil
1장. write(2)
파일기술자가 가리키는 파일에 쓴다. 이 파일기술자는 open(2), socket(2) 등으로 얻을수 있다.
1.1절. 사용법
1.2절. 설명
첫번째 아규먼트인 fd 는 열린파일 기술자이다. 이것은 보통 open(2), socket(2) 등으로 만들어지며, 때때로 pipe(2) 등으로 만들어지기도 한다.
두번째 아규먼트(:12)는 fd 로 쓸 데이타이며, count 는 fd 쓸 데이타의 크기이다.
1.3절. 반환값
성공할경우 쓰여진 바이트 만큼이 리턴된다. 0이면 쓰여진것이 없음을 나타내며, -1 일경우는 에러가 발생했을 경우이다. 에러가 발생했을경우에는 errno 에 적당한 값이 설정된다.
1.4절. 에러
다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.
fd 가 유효한 파일 기술자가 아니거나 쓰여질수 없도록 열려있을경우
fd 가 쓰기에 적당하지 않은 객체와 연결되어 있을경우
buf 가 접근할 수 없는 주소 공간을 가리키고 있을때
fd 가 끝이 닫혀진 소켓이나 파이프(:12)에 연결되어 있을때. 쓰고 있는 프로세스(:12)가 SIGPIPE signal(:12)를 받았을때 발생한다.
fd 가 비봉쇄(O_NONBLOCK) 로 열렸을경우, 데이터를 쓰기 위해 fd 와 연결된 파이프나 소켓에 공간이 없을때, 발생한다. 봉쇄로 열렸을경우에는 연결된 파이프나 소켓에 공간이 있을때까지 봉쇄된다.
fd 가 비봉쇄(O_NONBLOCK) 로 열렸을경우, 데이터를 쓰기 위해 fd 와 연결된 파이프나 소켓에 공간이 없을때, 발생한다. 봉쇄로 열렸을경우에는 연결된 파이프나 소켓에 공간이 있을때까지 봉쇄된다.
1.5절. 예제
Recent Posts
Archive Posts
Tags