一、dup 系列函数的功能
对输入文件描述符重定向。
dup参数越多,功能越齐全,要求也越细。
二、dup的基本结构
三、dup的代码实现
Makefile文件:
1 dup : dup.c
2 gcc -o $@ $^
3 .PHONY:clean
4 clean:
5 rm -f dup log
1 #include<unistd.h>
2 #include<stdio.h>
3 #include<sys/types.h>
4 #include<fcntl.h>
5 #include<string.h>
6
7 int main()
8 {
9 int fd = open("./log", O_CREAT|O_RDWR , 0666);
10 if( fd < 0 )
11 {
12 perror("open!");
13 return 1;
14 }
15 close(1);//关闭想要重定向的fd(最小fd)
16 int new_fd = dup(fd);//重定向标准输出到打开文件(fd)
17 if( new_fd == -1 )
18 {
19 perror("dup!");
20 return 2;
21 }
22 close(fd);
23 char buf[1024];
24 while(1)
25 {
26 memset(buf , '\0' , sizeof(buf)-1);
27 fgets(buf , sizeof(buf) , stdin);
28 if(strncmp("quit" , buf , 4) == 0)
29 {
30 break;
31 }
32 printf("%s",buf);//直接打印到标准输出,即可写入文件
33 fflush(stdout);
34 }
35 close(new_fd);
36 return 0;
37 }