导航:[首页]->[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