导航:[首页]->[bash]->[fd,FILE*,HANDLE相互转换]

##fd和FILE*相互转换 使用fileno函数从FILE指针获得fd。

使用fdopen函数打开一个fd并返回FILE指针

###参考

  1. http://msdn.microsoft.com/en-us/library/zs6wbdhx\(v=vs.80\).aspx
  2. http://linux.die.net/man/3/fileno
  3. http://pubs.opengroup.org/onlinepubs/009604499/functions/fdopen.html

##fd和HANDLE相互转换 使用_get_osfhandle函数从fd获得HANDLE

使用_open_osfhandle函数从HANDLE获得fd

###参考

  1. http://msdn.microsoft.com/en-us/library/ks2530z6.aspx
  2. http://msdn.microsoft.com/en-us/library/bdts1c9x.aspx
  3. http://blog.csdn.net/zjl_wzw/article/details/6162846

##重新打开 使用freopen函数重新打开FILE*

使用DuplicateHandle函数重新打开HANDLE

使用dup/dup2/dup3函数重新打开fd,但是不能变更权限,可以使用fcntl配合F_SETFL变更权限。

###参考

  1. http://www.cplusplus.com/reference/cstdio/freopen/
  2. http://msdn.microsoft.com/en-us/library/windows/desktop/ms724251\(v=vs.85\).aspx
  3. http://www.kernel.org/doc/man-pages/online/pages/man2/fcntl.2.html
  4. http://www.kernel.org/doc/man-pages/online/pages/man2/dup.2.html