본문 바로가기
프로그래밍/C·C++

readn() & writen() 코드, unpipc.h 파일

by ITPro 2010. 8. 11.


unpipc.h 를 include 하고 사용한다.

일반 read()&write() 함수와 사용법은 같다. 

readn

ssize_t readn(int fd, void *vptr, size_t n)
{
 size_t nleft;
 ssize_t nread;
 char *ptr;

 ptr = vptr;
 nleft = n;
 while (nleft > 0) {
  if ( (nread = read(fd, ptr, nleft)) < 0) {
   if (errno == EINTR)
    nread = 0;  /* and call read() again */
   else
    return(-1);
  } else if (nread == 0)
   break;    /* EOF */

  nleft -= nread;
  ptr   += nread;
 }
 return(n - nleft);  /* return >= 0 */
}
/* end readn */

 

 

 

writen

ssize_t writen(int fd, const void *vptr, size_t n)
/* Taken from UNIX Network Programming - Vol. I by W.R. Stevens */
  {
    size_t nleft;
    ssize_t nwritten;
    const char *ptr;

    ptr = vptr;
    nleft = n;
    while(nleft > 0) {
      if ( (nwritten = write(fd, ptr, nleft)) <= 0) {
        if (errno == EINTR)
          nwritten = 0;
        else
          return (-1);
      }
      nleft -= nwritten;
      ptr += nwritten;
    }
    return (n);
  }

반응형

'프로그래밍 > C·C++' 카테고리의 다른 글

C에서 입력 버퍼를 비울 때 피해야할 방법  (0) 2010.08.11
maze 싱글 소스  (0) 2010.08.11
curses.h,ncurses.h 가 없을 경우  (0) 2010.08.11
gcc mysql.h 컴파일  (0) 2010.08.11
ncurses 프로그래밍  (0) 2010.08.11

바로가기