找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 服务器 Linux/BSD 查看内容

文件I/O函数(dup,dup2)

2009-12-20 13:36| 发布者: admin| 查看: 23| 评论: 0|原作者: 云天青









dup和dup2函数:int
dup(int filedes); int dup2(int filedes,int filedes2);
返回:若成功为新的文件描述符,若出错为-1
作用:用来复制一个文件描述符,经常用来重定向进程的stdin,stdout,stderr。
由dup返回的新文件描述符一定是当前可用文件描述符中最小数值,该新的描述符是传递给它的描述符的拷贝,这意味着这两个描述符共享同一个数据结构。用dup2则可以用filedes2参数指定新描述符的数值,如果filedes2已经打开,则先将其关闭,如果filedes等于filedes2,则dup2返回filedes2,而不关闭它。
范例:
#include

#include

#include

#include

#include

#include

int
main(void)
{
int
fd;
int
fddup;
int
fddup2;
char
buf1[]="Hello, world!";
char
buf2[50];

if((fd=open("/home/sam/helloworld",O_CREAT|O_TRUNC|O_RDWR,0666))==-1)
{
printf("Open
or create file named \"helloworld\" failed.\n");
exit(1);
}
printf("%d\n",fd);
write(fd,buf1,sizeof(buf1));
close(fd);

if((fd=open("/home/sam/helloworld",O_RDONLY))==-1)
{
printf("Open
file named \"helloworld\" failed.\n");
exit(1);
}
printf("%d\n",fd);
fddup=dup(fd);
fddup2=dup2(fd,8);
printf("%d\n",fddup);
printf("%d\n",fddup2);

read(fddup2,buf2,sizeof(buf2));
printf("%s\n",buf2);
close(fd);
close(fddup);
close(fddup2);
return
0;
}









最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 15:29 , Processed in 0.136893 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部