《电影荒岛女儿国》:不止是奇幻,更是关于女性力量的深刻探索
从标准输入拷贝文件或从指定磁盘文件拷贝到标准输出。
#include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h #include stdio.h #include stdlib.h #include errno.h #include string.h #define DEF_MODE S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH #define DEF_UMASK S_IWGRP|S_IWOTH #define RIO_BUFSIZE 8192 #define MAXLINE 10 typedef struct { int rio_fd; /* Descriptor for this internal buf */ int rio_cnt; /* unread bytes in internal buf */ char *rio_bufptr; /* Next unread bytes in internal buf */ char rio_buf[RIO_BUFSIZE]; /* Internal buffer */ } rio_t; void rio_readinitb(rio_t *rp, int fd); ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen); static ssize_t rio_read(rio_t *rp, char *usrbuf, size_t n); ssize_t rio_writen(int fd, void *usrbuf, size_t n); int main(int argc, char **argv) { int n,fd1; rio_t rio; char buf[MAXLINE]; if((argc!
(argc!
) { fprintf(stderr,usage : %s infile\n,argv[0]); exit(
; } if(argc
{ int fd; if((fdopen(argv[1], O_RDONLY,
)
{ fprintf(stderr,Couldntread%s\n,argv[1]); exit(
; } dup2(fd, STDIN_FILENO); close(fd); } rio_readinitb(rio, STDIN_FILENO); while((n rio_readlineb(rio, buf, MAXLINE)) !
rio_writen(STDOUT_FILENO, buf, n); return 0; } ssize_t rio_writen(int fd, void *usrbuf, size_t n) { size_t nleft n; ssize_t nwritten; char *bufp usrbuf; while (nleft
{ if ((nwritten write(fd, bufp, nleft))
{ if (errno EINTR) /* Interrupted by sig handler return */ nwritten 0; /* and call write() again */ else return -1; /* errno set by write() */ } nleft - nwritten; bufp nwritten; } return n; } void rio_readinitb(rio_t *rp, int fd) { rp-rio_fd fd; rp-rio_cnt 0; rp-rio_bufptr rp-rio_buf; } ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen) { int n, rc; char c, *bufp usrbuf; for (n 1; n maxlen; n) { if ((rc rio_read(rp, c,
)
{ *bufp c; if (c \n) break; } else if (rc
{ if (n
return 0; /* EOF, no data read */ else break; /* EOF, some data was read */ } else return -1; /* Error */ } *bufp 0; return n; } static ssize_t rio_read(rio_t *rp, char *usrbuf, size_t n) { int cnt; while (rp-rio_cnt
{ /* Refill if buf is empty */ rp-rio_cnt read(rp-rio_fd, rp-rio_buf, sizeof(rp-rio_buf)); if (rp-rio_cnt
{ if (errno ! EINTR) /* Interrupted by sig handler return */ return -1; } else if (rp-rio_cnt
/* EOF */ return 0; else rp-rio_bufptr rp-rio_buf; /* Reset buffer ptr */ } /* Copy min(n, rp-rio_cnt) bytes from internal buf to user buf */ cnt n; if (rp-rio_cnt n) cnt rp-rio_cnt; memcpy(usrbuf, rp-rio_bufptr, cnt); rp-rio_bufptr cnt; rp-rio_cnt - cnt; return cnt; }
六间房9.1隐藏入口10.31-六间房9.1隐藏入口应用