复制文件描述符
int dup(int oldfd);
新返回一个文件描述符指向oldfd对应的文件
int dup2(int’oldfd,int newfd);
关闭newfd对应的文件描述符
将newfd重新指向为oldfd对应的文件
1 #include<stdio.h>
2 #include<unistd.h>
3 #include<sys/types.h>
4 #include<sys/stat.h>
5 #include<fcntl.h>
6 int main()
7 {
8
9 int outfd=dup(1);
10 int fd =open("world",O_WRONLY|O_CREAT,0666);
11 dup2(fd,1);
12 printf("hello world\n");
13 fflush(stdout);//printf没有刷新会放在缓冲区,所以不加这个语句,printf输出重定向不能成功
14 dup2(outfd,1);
15 printf("hello world\n");
16 close(fd);
17 return 0;
18
19 }
fflush(stdout);//printf没有刷新会放在缓冲区,所以不加这个语句,printf输出重定向不能成功
~
该博客介绍了C语言中dup()和dup2()函数的使用,通过示例代码展示了如何复制文件描述符以及如何重定向标准输出。关键操作包括使用dup()创建一个与标准输出相同的新文件描述符,然后使用dup2()将标准输出重定向到一个打开的文件,最后恢复原始的标准输出。注意,使用fflush()确保了printf()的输出立即写入到文件中。
4658

被折叠的 条评论
为什么被折叠?



