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; } |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏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.