当前位置:  技术问答>linux和unix

关于dup2的一个问题

    来源: 互联网  发布时间:2016-04-25

    本文导语:  fd=open( ); dup2(fd,STDOUT_FILENO); 系统会关掉STDOUT_FILENO,然后往标准输出写的东西都会重定向到fd所指向的文件,现在问题是,STDOUT_FILENO已经关掉了,怎么还能往标准输出写呢  不是在写数据都是根据文件描述符然后在进...

fd=open( );
dup2(fd,STDOUT_FILENO);
系统会关掉STDOUT_FILENO,然后往标准输出写的东西都会重定向到fd所指向的文件,现在问题是,STDOUT_FILENO已经关掉了,怎么还能往标准输出写呢 
不是在写数据都是根据文件描述符然后在进程表里查找文件指针,然后找到文件表,然后读写的吗,是不是我理解错了啊,哪位可以讲解一些,越详细越好

|
STDOUT_FILENO是可以先被关闭!关闭之后,STDOUT_FILENO的值仍然是2. 只是你此时不能向其写入数据了!
你可以理解为,close其实就是将文件描述符(一个数字)和内核中具体的文件对象断开联系了!

当调用dup2(fd,STDOUT_FILENO); 之后,STDOUT_FILENO又“活”了,是fd的一份copy,你可以理解为在dup2()中为STDOUT_FILENO和fd对应的内核文件对象建立起了联系。此时,在内核中,fd和STDOUT_FILENO对应的文件对象是同一个!

good luck!


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 哪位大侠帮忙写一个函数dup1()实现dup2()的功能!或者直接提供dup2()的源码??
  • UNIX环境下,如何实现dup2函数,不允许调用fcntl?
  • Unix高级环境编程一有关dup2的习题,求解释!!!!
  • APUE初学者:请问dup,dup2函数可以用来干什么?有什么好处?
  • dup2后的奇异现象
  • dup2(fd[0],STDIN_FILENO)!=STDIN_FILENO疑问
  • 利用fork 与 dup2 执行 系统命令, 别的命令都可以获取执行结果,就fdisk 命令不可以. execve("/sbin/fdisk",args,NULL) , args 命令参数.
  • 哪位老大能讲一下lseek函数和dup与dup2函数是干什么用的,最好有实例
  • 急: 代码那里写错了??dup2 execve写的执行命令的程序, 重定向标准输入、输出、标准错误,无法获取到fdisk 的命令输出。别的命令都可以。附代码


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3