21 // 使用 dup2 实现错误日志功能
22 // 使用 write 和 read 实现文件的拷贝功能,
23 // 注意,代码中所有函数后面,紧跟perror输出错误信息,
24 // 要求这些错误信息重定向到错误日志 err.txt 中去
25 int main(int argc, const char *argv[])
26 {
27 int errfd=open("./err.txt",O_RDONLY|O_WRONLY|O_CREAT|O_TRUNC,0666
28 if(errfd==-1)
29 {
30 perror("err");
31 return 1;
32 }
33
34 int newerr=dup(2);
35 if(newerr==-1)
36 {
37 perror("newerr");
38 return 1;
39 }
40 dup2(errfd,2);
41
42 int rfd=open("./file1.txt",O_RDONLY|O_CREAT,0666);
43 if(rfd==-1)
44 {
45 perror("ropen");
46 return 1;
47 }
48
49
50 char rbuf[128]={0};
51 int rcount=read(rfd,rbuf,128);
52 printf("成功输出%d个数据\n",rcount);
53 close(rfd);
54
55
56 int wfd=open("./file2.txt",O_WRONLY);
57 if(wfd==-1)
58 {
59 perror("wopen");
60 return 1;
61 }
62
63
64 int wcount=write(wfd,rbuf,rcount);
65 printf("成功输入%d个数据\n",wcount);
66 close(wfd);
67
68 dup2(newerr,2);
69
70 return 0;
71 }
zuoye5.8
最新推荐文章于 2024-11-01 14:48:20 发布