I/o 重定向 dup2函数

unix shell提供i/o重定向操作符,允许用户将磁盘文件和标准输入输出联系
例:键入[root@localhost ~]#ls >a.txt
使用这个命令使shell加载和执行ls程序,将标准输出重定向到磁盘文件a.txt。
例:当一个web服务器代表客户端运行CGI程序时,其实执行的是一种相类似的重定向,在linux c中使用dup2函数来使文件进行重定向操作。
dup2 函数所需的头文件 #include < unistd.h>
函数原型: int dup2(int oldfd,int newfd);
返回结果: 成功则返回非负的描述符,出错 则返回-1;
函数说明:dup2函数的功能是将描述符oldfd copy 到newfd上,如果newfd已经打开,dup2函数会先关闭newfd,然后再copy oldfd到newfd上。


代码:
#include < stdio.h>
#include < fcntl.h> //open函数需要使用头文件
#include < stdlib.h>
#include < unistd.h>
int main(){
int fd1;
int i=0;
fd1 = open(“t2.txt”,O_RDWR,0); //可写模式打开文件
if(fd1 >0){
printf(“file read success!\n”);
}
dup2(fd1,1); //将fd1句柄赋值到标准输出上,在程序中的标准输出都将会输出到文件fd1中

for(i=0;i<3;i++){ printf("write file %d\n",i); } close(fd1); return 0; }


运行效果:
linux c dup2

相关阅读:
linux c打开文件的方法