zoukankan      html  css  js  c++  java
  • dup的使用(二)

    转自:http://blog.csdn.net/yeyuangen/article/details/6852682

    一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell
    中运行一个进程,默认会有3个文件描述符存在(0、1、2), 0与进程的标准输入相关联,
    1与进程的标准输出相关联,2与进程的标准错误输出相关联,一个进程当前有哪些打开
    的文件描述符可以通过/proc/进程ID/fd目录查看


    int oldfd;
    oldfd = open("app_log", (O_RDWR | O_CREATE), 0644 );
    dup2( oldfd, 1 );
    close( oldfd );
    本例中,我们打开了一个新文件,称为“app_log”,并收到一个文件描述符,该描述符叫做oldfd。我们调用dup2函数,参数为oldfd和1,这会
    导致用我们新打开的文件描述符替换掉由1代表的文件描述符(即stdout,因为标准输出文件的id为1)。任何写到stdout的东西,现在都将改为写
    入名为“app_log”的文件中。需要注意的是,dup2函数在复制了oldfd之后,调用了close( oldfd ),但不会关掉新近打开的文件,因为文件描述
    符1现在也指向它

    dup2和dup的区别就是可以用newfd参数指定新描述符的数值,如果newfd已经打开,则
    先将其关闭。如果newfd等于oldfd,则dup2返回newfd, 而不关闭它。dup2函数返回的新
    文件描述符同样与参数oldfd共享同一文件表项。
    实际上,调用dup(oldfd);
    等效与
    fcntl(oldfd, F_DUPFD, 0)
    而调用dup2(oldfd, newfd);
    等效与
    close(oldfd);
    fcntl(oldfd, F_DUPFD, newfd);

  • 相关阅读:
    odoo11 外部数据导入方法2
    odoo 11 实现多个字段对应一个查询参数的查询
    ionic 访问odoo11之具体业务类api接口
    ionic访问odoo 11接口
    odoo 11导入外部数据过程记录
    程序发送邮件的思考
    Topshelf的Ioc实现
    查看MS Sqlserver文件大小语句
    TopShelf 自动配置Service测试
    odoo11 添加自定义模块报错问题
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/6281810.html
Copyright © 2011-2022 走看看