本文共 930 字,大约阅读时间需要 3 分钟。
本程序实现数据拷贝。
#include#include #include #include #include #include #define BUFSIZE 4096int main(int argc,char* argv[]){ if(argc!=1&&argc!=3) { fprintf(stderr,"Invalid argument number\n"); exit(1); } int from,to; int n; char buf[BUFSIZE]; if(argc==1) { from = STDIN_FILENO; to = STDOUT_FILENO; } else { if((from = open(argv[1], O_RDONLY))==-1) { fprintf(stderr,"open %s error\n",argv[1]); exit(2); } if((to = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR))==-1) { fprintf(stderr,"open %s error\n",argv[2]); exit(3); } } while ((n = read(from, buf, BUFSIZE)) > 0) { if (write(to, buf, n) != n) { fprintf(stderr, "write error\n"); exit(4); } if (n < 0) { fprintf(stderr, "read error\n"); exit(5); } } close(from); close(to); exit(0);}